هنر و خلاقیت (آموزش)

سایت آموزشی هنری بوم شاپ ( boomshop.ir ) برای هنر دوستان و افراد خلاق

هنر و خلاقیت (آموزش)

سایت آموزشی هنری بوم شاپ ( boomshop.ir ) برای هنر دوستان و افراد خلاق

هنر و خلاقیت (آموزش)

:: از آنجا که اکثر ما تصور غلطی از یادگیری هنر طراحی داریم و طراحی را بیشتر یک استعداد خدا دادی می دانیم .
در حالی که طراحی بیشتر از آنکه نیاز به استعداد داشته باشد نیازمند آموزش , خلاقیت و پشتکار است. در واقع همه ما می‌توانیم به خوبیِ هنرمندانِ بزرگ طراحی کنیم فقط نیازمند روشن شدن راه و زندگی نامه ی هنرمندان بزرگ هستیم تا به خود ایمان بیاوریم و پا پیش گزاریم.
بنا براین سایت بوم شاپ ( boomshop.ir ) در تلاش برای افزایش سطح هنری کاربران علاقه مند و هنرمندان عزیز می باشد تا این نقصان کوچک زندگیمان را برطرف سازیم.
سایت بوم شاپ ( boomshop.ir ) از کاربرانی که در زمینه های هنری مهارت و فعالیت دارند دعوت به همکاری می نماید.
و از هنرمندانی که علاقه دارند آثارشان در سایت بوم شاپ ( boomshop.ir ) به نمایش در آید تقاضا می کند آثار خود را به ایمیل
BoomShopIR@gmail.com
ارسال نمایند.

مدیریت بوم شاپ :سعید امینی

با ما باشید
هاست هاست
Instagram
اسلایدر
آخرین نظرات

۱۴ مطلب با موضوع «کد نویسی» ثبت شده است

سلام دوستان عزیز ،

این مقاله یکی از مقالات منتشر شده در چهارمین شماره ماهنامه طراحی وب می باشد که به جهت استقبال مخاطبین در سایت هم قرار میگیرد .

گاهی اوقات ما در فتوشاپ با فایل های حجیم و بزرگی سرو کار داریم و تعدد لایه ها باعث سردرگمی ما میشه . حالا اگر بخوایم یک سری پارامتر هایی رو در چند لایه اعمال کنیم این کار رو واسه ما سخت میکنه چون باید یک به یک بر روی هر لایه تغییرات رو لحاظ کنیم . به عنوان مثال فرض کنید ما میخوایم Drop Shadow رو در FX چند لایه تغییر بدیم . خب برای این کار باید به  Layer Style  کلیه اون لایه ها مراجعه کنیم و دراپ شادو هر کدوم رو تنظیم کنیم .  خب این کار بسیار سخت و طاقت فرسا هست ولی هیچ گاه فکرشو کردید که شاید راه دیگه ای هم باشه که این کار رو با چند کلیک برای ما انجام بده  ؟ پس ادامه آموزش رو مطالعه کنین .

پلاگین Composer فتوشاپ

پلاگین Composer که توسط وب سایت jasonforal.com ارائه شده امکان این رو برای شما فراهم میکنه که در حقیقت لایه های فایل فتوشاپی خودتون رو با هم سینک ( Sync ) کنین و  تغییرات خاصی رو به یک باره روی همه لایه های انتخاب شده اعمال کنین . در زیر به ویژگی های این افزونه اشاره میکنم :

 

Composer

 

۰ نظر موافقین ۰ مخالفین ۰ ۲۰ آذر ۹۴ ، ۰۹:۳۸
مهندس عشق هنر

سلام به همه شما دوستان عزیز ،

این مقاله یکی از مقالات منتشر شده در چهارمین شماره ماهنامه طراحی وب می باشد که به جهت استقبال مخاطبین در سایت هم قرار میگیرد . این مقاله یکی از مقالات ترجمه شده می باشد و به زبان عامیانه نویسنده منتشر میشود .

۶ راهکار ساده از اصول اولیه رنگ شناسی وب

به وضوح یکی از اولین کلاس های هنر خودم رو به یاد میارم ، وقتی که به عنوان یک کودک مشتاق در مورد گروهی از رنگ های روشن پرس و جو میکردم . انجا بود که رنگ های اصلی رو با هم ترکیب کردم تا بتونم رنگ های غیر اصلی رو به وجود بیارم و از این کار لذت بردم چون به این پی بردم که وقتی میشه دو رنگ رو با هم ترکیب کرد ، برای به وجود آوردن یه رنگ جدید میشه رنگ های مختلفی رو با هم ادغام کرد و باز هم رنگ های جدیدتری رو بوجود آورد . مهم نبود که از چه طریقی تونستم به این مهم دست پیدا کنم و فقط این اهمیت داشت که تونستم رنگ جدیدی رو بوجود بیارم .

 

سال های بعد وقتی که داشتم به عنوان یک طراح وب تازه کار کار میکردم ٬ چیزهای مشابهی که قبلا گذرونده بودم رو یک بار دیگه تجربه کردم . موقع کار داخل یک تله ای از رنگ های بسیار زیاد افتادم که نمیشد از اونها دوری کرد . بله ، ‌رنگ های بسیار زیاد و تازه داستان به همین جا ختم نمیشد ! ترکیب اونها به روش غلط منجر به درست شدن رنگ های بی استفاده میشد .
من سعی کردم تلاش کنم و در مورد طرح های رنگی وب بیشتر یاد بگیرم که باعث شد اطلاعات بسیار بسیار جالبی در مورد تئوری رنگ پیدا کنم . من در مورد رنگ ها ٬ ته رنگ ها ٬ سایه ها ٬ نوا ها ٬ اشباع کردن و روشنایی مطالعه داشتم . رنگ های مشابه ٬ تک رنگ ها و رنگ های سه تایی ٬ رنگ های مکمل و بقیه طرح های رنگی ترکییبی از دیگر چیزایی بود که بهشون پرداختم .

rgb

در این آموزش قصد دارم که ۶ راه کارساز مطمئن که هیچ وقت غلط جواب نمیدهند رو با شما به اشتراک بذارم تا به یک فهم بنیادی هنگام کار کردن با رنگ ها وقتی که دارید یک وب رو طراحی میکنید دست پیدا کنید . دقت کنین که این ها قانون نیستند همونطور که وقتی وارد حرفه ای ها بشید کاملا مسیر دیگه ای رو برای درست کردن طرح های رنگی استفاده میکنین . با این وجود این ها نقاط شروع هستند ٬ یک سری راهکار های ایمن رو در این زمینه به شما معرفی کنم .

۰ نظر موافقین ۰ مخالفین ۰ ۲۰ آذر ۹۴ ، ۰۹:۳۱
مهندس عشق هنر

سلامی مجدد به همه دوستان علاقه مند به طراحی وب و گرافیک

در این نوشته قصد دارم با ذکر ۳ نمونه در مورد اینکه چگونه وب سایتی برای فروش موثر یک محصول طراحی کنیم صحبت مفید و مختصری داشته باشیم .

shop-product

تعریف صحیح یک وب سایت برای فروش موثر یک محصول

قبل از اینکه بخوایم در مورد مسائل فنی و دقیقتر صحبت کنیم باید اول بدونم منظورمون از یک وب سایت برای فروش موثر یک محصول چیه ؟ منظور ما وب سایتیست که اطلاعات محصول مورد نظر ما رو داخل خودش قرار داده باشه و اون اطلاعات به شکلی به نمایش گذاشته بشه که بتونه در فروش اون محصول موثر باشه و صرفا معرفی کننده محصول نباشه که اصطلاحا از این سایت ها و صفحات با نام صفحات فرود نام برده میشه . زمانی که بحث فروش و مسائل مالی هست ما باید به موارد زیادی توجه داشته باشیم ، از جمله جذب و متقاعد کردن مشتری در کمترین زمان ممکن و فراهم آوری بستر مناسب برای خرید محصول و در حقیقت بالا بردن نرخ خرید .

چنین وب سایت هایی منحصرا برای فروش یک یا چند محصول طراحی میشن و اطلاعاتی در اختیار مخاطب قرار داده میشه که کاملا با اون محصول یا محصولات مرتبط بوده و جهت تشریح امکانات ، خدمات و ویژگی های اون طراحی خواهد شد .

۰ نظر موافقین ۰ مخالفین ۰ ۲۰ آذر ۹۴ ، ۰۹:۲۹
مهندس عشق هنر

سلام به همه همراهان عزیز ،

در این نوشته در مورد ۵ طراحی برتر صفحه فرود اپلیکیشن ها در سال ۲۰۱۵ صحبت خواهم کرد و این ۵ طرح رو به شما معرفی و در موردشون چند خطی توضیحات خواهم داد . ازتون درخواست میکنم با من همراه باشید :-)

ابتدا اگر با عنوان صفحه فرود آشنا نیستید پیشنهاد میکنم نوشته چگونه وب سایتی برای فروش موثر یک محصول طراحی کنیم ؟ رو حتما مطالعه کنین تا با دید بازتری بتونید این مقاله رو پیگیری کنین .

اپلیکیشن ها یا برنامک های موبایلی که بر روی اسمارت فون ها به اجرا در میان در ابعاد و کاربرد های مختلفی طراحی و برنامه نویسی میشن . این اپلیکیشن ها در سایت های دانلود اَپ برای دریافت قرار داده میشن مثل Play Store و یا کافه بازار یا ایران اپس که دارای مخاطبین زیادی هم هستند اما برخی از این اپلیکیشن ها که عموما سازنده اونها شرکت های بزرگی هم هست ، دارای یک وب سایت و یا یک صفحه فرود هستند تا بتونن ارائه این اپلیکیشن رو از طریق وب سایت خودشون هم فراهم کنند .

این وب سایت ها عموما به شکل صفحه فرود طراحی میشن چون باید کارایی جذب مخاطب رو داشته باشند و اگر اون اپلیکیشن پولی یا premium باشه باید بتونه پروسه متقاعد سازی مشتری رو هم به خوبی طی کنه .

در این نوشته تصمیم گرفتم ۵ اپلیکیشن حرفه ای که البته دارای صفحه فرود هم هستند رو به شما معرفی کنم تا با یک مقایسه کلی نقاط مشترک کلیه این صفحات رو بدست بیاریم و در صفحات فرود اپلیکیشن های خودمون ازش استفاده کنیم .

۰ نظر موافقین ۰ مخالفین ۰ ۲۰ آذر ۹۴ ، ۰۹:۲۶
مهندس عشق هنر

سانمی ود دانشجوی آمریکایی در تاریخ ۲۹ سپتامبر به مدت یک دقیقه توانست حق کنترل دامنه google.com را خریداری کند و مالک آن شود.

وقتی گوگل متوجه شد سریع مداخله کرد و معامله را برهم زد. گوگل به خاطر کشف این ضعف در سیستم خدمات فروش دامنه‌اش جایزه‌ای را برای این دانشجو در نظر گرفته‌است.

ود این تجربه تکرارنشدنی را در شبکه لینکد‌این خود تشریح کرده‌است. وی می‌گوید همیشه بر دامنه‌های وب مرتبط با گوگل نظارت داشته به این امید که روزی بتواند در این شرکت بزرگ مشغول به کار شود. در اوایل روز ۲۹ سپتامبر ۲۰۱۵ ود درحال گشت‌زنی در سایت خدمات خرید وب متعلق به گوگل، کنار نام دامنه google.com نشانه برای فروش را مشاهده کرد.سپس با استفاده از کارت اعتباری خود با پرداخت ۱۲دلار دامنه گوگل را خریداری کرد.سپس ایمیلی دریافت کرد که مالکیت وی را تائید کرده بود.
بلافاصله ایمیل هایی حاوی پیام‌هایی که مخصوص تیم اداره کننده وب گوگل بود دریافت نمود.
پس از آن بود که پیامی مبنی بر لغو شدن خرید دامنه برای وی ارسال شد که در آن نوشته شده بود به دلیل اینکه فرد دیگری مالک این دامنه است، خرید شما لغو خواهد شد و مبلغ پرداخت شده نیز به حساب وی بازگردانده شد.
fars 13940721000431 دانشجوی آمریکایی برای مدتی کوتاه دامنه گوگل را خریداری کرد

 

نوشته دانشجوی آمریکایی برای مدتی کوتاه دامنه گوگل را خریداری کرد اولین بار در طراحی سایت, بهینه سازی سایت, طراحی وب سایت, وب, سئو , طراحی وبسایت پدیدار شد.

۰ نظر موافقین ۰ مخالفین ۰ ۳۰ مهر ۹۴ ، ۱۵:۴۵
مهندس عشق هنر

شرکت Imperson نرم افزار جدیدی را به بازار عرضه کرده است که به طرفداران تلویزیون و سینما این امکان را می دهد تا با شخصیت های مجازی کاراکترهای نمایشی محبوب خودشان گفت و گو کنند. این محصول امکانی را برای فعالیت های بازاریابی بهتر و بهینه تر در زمینه های مربوط به تصویرسازی سه بعدی و القای سایر حس ها به تماشگر به جز صدا و تصویر گشوده است. 

تکنولوژی جدید این شرکت به برندهای تجاری اجازه می دهد که کاراکتر های سینمایی را به شکلی نزدیک به واقعیت به کار گیرند تا از آن طریق بتوانند ارتباط تنگاتنگ تری با مخاطبین خود برقرار سازند.

در یک سلسله فعالیت های بازاریابی برای فیلم سینمایی بازار شکن ویژه ی نوجوانان به نام "Unfriendeds" (محصول 2015 آمریکا)، استودیوی فیلم یونیورسال به منظور ساخت یک شخصیت مجازی برای یکی از نقش های کلیدی که در بخش های ابتدایی فیلم تصور می شد خود کشی کرده است، از نرم افزار جدید ایمپرسن استفاده کرد.

لورا بارنس که یکی از شخصیت های این فیلم سینمایی است (و گفتیم در ابتدا دوستان او تصور می کردند خودکشی کرده است و در ادامه روح او برای حل معمای قتلش در شبکه های اجتماعی فعالیت می کند و برای دوستانش پیام می فرستد) به پیام های روی پروفایل فیسبوک خود پاسخ می داد که این کار ده ها هزار نفر را به افسانه ی سینما کشاند و این در حالی بود که بیش از نیمی از طرفداران صفحه ی فیسبوک Unfriendeds متقابلاً با این شخصیت مجازی در تعامل بودند.

مؤسس و مدیر اجرایی بخش انتخاب تکنولوژی این شرکت -آیل فیفل- گفت: "ما می خواهیم فاصله ی بین شخصیت ها و مردم را پر کنیم و از طریق مکالمه ی واقعی درها را به روی تلویزیون، سینما و شخصیت های افسانه ای بگشاییم. این تکنولوژی جدید شرکت ما، شخصیت های سینمایی را از دنیای مجازی وارد زندگی مخاطبین می کند و با انتقال ایشان به دنیای فانتزی شان، به ایشان اجازه می دهد تا در دنیای تخیلی خود زندگی کنند."

اگرچه این تکنولوژی در حال حاضر برای استفاده در فعالیت های بازاریابی ارائه شده است، نرم افزار ایمپرسن به خوبی می تواند مبنای تکنولوژی های الهام بخش علمی–تخیلی مانند دستیاران مجازی هولوگرافیک که در فرودگاه ها مورد استفاده قرار می گیرند و روبات های شخصی که به هر فرمان شما پاسخ می دهند نیز باشد.

Imperson’s new tech lets fans chat with their favorite fictional characters

۰ نظر موافقین ۰ مخالفین ۰ ۲۴ تیر ۹۴ ، ۱۸:۱۱
مهندس عشق هنر

کتاب های تصویری تعاملی تحت وب برای کودکان

برای کودکان نسل ما کتاب های تصویری جذاب بودند اما امروزه کتاب های تعاملی تصویری تحت وب که در اختیار کودکان نسل فناوری قرار می گیرند، حسادت کسانی که به نسل های قدیمی تر باز می گردند را برمی انگیزد. Enough پروژه ای است که داستان سفر یک ستاره ی دریایی نورانی را در تاریک ترین اعماق اقیانوس نقل می کند و مجموعه ای از صداها و تصاویر زیبا را به مدت حدودا ۳۰ دقیقه به نمایش می گذارد. تقریباً همه چیز در این کتاب تعاملی است و سیر طبیعی داستان به گونه است که خواننده را به تدریج به صفحات مختلف این کتاب هدایت می کند.

۰ نظر موافقین ۰ مخالفین ۰ ۲۴ تیر ۹۴ ، ۱۷:۴۰
مهندس عشق هنر

برنامه نویسی

در حال حاضر صدها زبان برنامه نویسی وجود دارد اما تعداد محدودی از آنها شناخته شده تر از مابقی هستند. زمانی که یک شرکت تصمیم می گیرد تا برنامه نویس جدیدی استخدام کند، معمولاً به دنبال افرادی می گردد که با زبان های برنامه نویسی و سیستم هایی که پیش از آن نیز استفاده می کرده آشنا باشند. این شرکت ها معمولاً تمایل ندارند تا استفاده کردن از زبان های برنامه نویسی جدیدی نظیر Google Go و یا Apple Swift را تجربه کنند. در این مقاله با چند زبان برنامه نویسی که باید آنها را یاد بگیرید تا شغل مناسبی پیدا کنید آشنا می شویم. این فهرست توسط TIOBE Index و رنکینگ زبان های برنامه نویسی Redmonk ارائه شده است. با سکان آکادمی همراه باشید.

۰ نظر موافقین ۰ مخالفین ۰ ۲۴ تیر ۹۴ ، ۱۷:۲۵
مهندس عشق هنر

مطالب قبل:
پیاده سازی پروژه نقاشی شی گرا *قسمت اول* 
پیاده سازی پروژه نقاشی شی گرا *قسمت دوم*  
پیاده سازی پروژه نقاشی شی گرا *قسمت سوم*
پیاده سازی پروژه نقاشی شی گرا *قسمت چهارم*  
پیاده سازی پروژه نقاشی شی گرا *قسمت پنجم*

ابتدا به تشریح کلاس ترسیم بیضی (Ellipse) می‌پردازیم.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System.Drawing;
 
namespace PWS.ObjectOrientedPaint.Models
{
    /// <summary>
    /// Ellipse Draw
    /// </summary>
    public class Ellipse : Shape
    {
        #region Constructors (2)
 
        /// <summary>
        /// Initializes a new instance of the <see cref="Ellipse" /> class.
        /// </summary>
        /// <param name="startPoint">The start point.</param>
        /// <param name="endPoint">The end point.</param>
        /// <param name="zIndex">Index of the z.</param>
        /// <param name="foreColor">Color of the fore.</param>
        /// <param name="thickness">The thickness.</param>
        /// <param name="isFill">if set to <c>true</c> [is fill].</param>
        /// <param name="backgroundColor">Color of the background.</param>
        public Ellipse(PointF startPoint, PointF endPoint, int zIndex, Color foreColor, byte thickness, bool isFill, Color backgroundColor)
            : base(startPoint, endPoint, zIndex, foreColor, thickness, isFill, backgroundColor)
        {
            ShapeType = ShapeType.Ellipse;
        }
 
        /// <summary>
        /// Initializes a new instance of the <see cref="Ellipse" /> class.
        /// </summary>
        public Ellipse()
        {
            ShapeType = ShapeType.Ellipse;
        }
 
        #endregion Constructors
 
        #region Methods (1)
 
        // Public Methods (1) 
 
        /// <summary>
        /// Draws the specified g.
        /// </summary>
        /// <param name="g">The g.</param>
        public override void Draw(Graphics g)
        {
            if (IsFill)
                g.FillEllipse(BackgroundBrush, StartPoint.X, StartPoint.Y, Width, Height);
            g.DrawEllipse(Pen, StartPoint.X, StartPoint.Y, Width, Height);
            base.Draw(g);
        }
 
        #endregion Methods
    }
}
این کلاس از شی Shape ارث برده و دارای دو سازنده ساده می‌باشد که نوع شی ترسیمی را مشخص می‌کنند، در متد Draw نیز با توجه به توپر یا توخالی بودن شی ترسیم آن انجام میشود، در این کلاس باید متد HasPointInShape بازنویسی (override) شود، در این متد باید تعیین شود که یک نقطه در داخل بیضی قرار گرفته است یا خیر که متاسفانه فرمول بیضی خاطرم نبود. البته به صورت پیش فرض نقطه با توجه به چهارگوشی که بیضی را احاطه می‌کند سنجیده می‌شود. 
۰ نظر موافقین ۰ مخالفین ۰ ۱۹ خرداد ۹۴ ، ۲۰:۲۸
مهندس عشق هنر

مطالب قبل:
پیاده سازی پروژه نقاشی شی گرا *قسمت اول* 
پیاده سازی پروژه نقاشی شی گرا *قسمت دوم*  
پیاده سازی پروژه نقاشی شی گرا *قسمت سوم*
پیاده سازی پروژه نقاشی شی گرا *قسمت چهارم*  

در این پست به شرح کلاس Rectangle جهت رسم مستطیل و Square جهت رسم مربع می‌پردازیم

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System.Drawing;
 
namespace PWS.ObjectOrientedPaint.Models
{
    /// <summary>
    /// Rectangle
    /// </summary>
    public class Rectangle : Shape
    {
        #region Constructors (2)
 
        /// <summary>
        /// Initializes a new instance of the <see cref="Rectangle" /> class.
        /// </summary>
        /// <param name="startPoint">The start point.</param>
        /// <param name="endPoint">The end point.</param>
        /// <param name="zIndex">Index of the z.</param>
        /// <param name="foreColor">Color of the fore.</param>
        /// <param name="thickness">The thickness.</param>
        /// <param name="isFill">if set to <c>true</c> [is fill].</param>
        /// <param name="backgroundColor">Color of the background.</param>
        public Rectangle(PointF startPoint, PointF endPoint, int zIndex, Color foreColor, byte thickness, bool isFill, Color backgroundColor)
            : base(startPoint, endPoint, zIndex, foreColor, thickness, isFill, backgroundColor)
        {
            ShapeType = ShapeType.Rectangle;
        }
 
        /// <summary>
        /// Initializes a new instance of the <see cref="Rectangle" /> class.
        /// </summary>
        public Rectangle()
        {
            ShapeType = ShapeType.Rectangle;
        }
 
        #endregion Constructors
 
        #region Methods (1)
 
        // Public Methods (1) 
 
        /// <summary>
        /// Draws the specified g.
        /// </summary>
        /// <param name="g">The g.</param>
        public override void Draw(Graphics g)
        {
            if (IsFill)
                g.FillRectangle(BackgroundBrush, StartPoint.X, StartPoint.Y, Width, Height);
            g.DrawRectangle(Pen, StartPoint.X, StartPoint.Y, Width, Height);
            base.Draw(g);
        }
 
        #endregion Methods
    }
}

کلاس Rectangle از کلاس پایه طراحی شده در ^ ارث بری دارد. این کلاس ساده بوده و تنها شامل یک سازنده و متد ترسیم شی مستطیل می‌باشد.

۰ نظر موافقین ۰ مخالفین ۰ ۱۹ خرداد ۹۴ ، ۲۰:۱۳
مهندس عشق هنر

در ادامه  پست های قبل

پیاده سازی پروژه نقاشی شی گرا  *قسمت اول *  
پیاده سازی پروژه نقاشی شی گرا *قسمت دوم* 
پیاده سازی پروژه نقاشی شی گرا *قسمت سوم*

، در این پست به بررسی کلاس Triangle جهت رسم مثلث و کلاس Diamond جهت رسم لوزی می‌پردازیم.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using System.Drawing;
 
namespace PWS.ObjectOrientedPaint.Models
{
    /// <summary>
    /// Triangle
    /// </summary>
    public class Triangle : Shape
    {
        #region Constructors (2)
 
        /// <summary>
        /// Initializes a new instance of the <see cref="Triangle" /> class.
        /// </summary>
        /// <param name="startPoint">The start point.</param>
        /// <param name="endPoint">The end point.</param>
        /// <param name="zIndex">Index of the z.</param>
        /// <param name="foreColor">Color of the fore.</param>
        /// <param name="thickness">The thickness.</param>
        /// <param name="isFill">if set to <c>true</c> [is fill].</param>
        /// <param name="backgroundColor">Color of the background.</param>
        public Triangle(PointF startPoint, PointF endPoint, int zIndex, Color foreColor, byte thickness, bool isFill, Color backgroundColor)
            : base(startPoint, endPoint, zIndex, foreColor, thickness, isFill, backgroundColor)
        {
            ShapeType = ShapeType.Triangle;
        }
 
 
        /// <summary>
        /// Initializes a new instance of the <see cref="Triangle" /> class.
        /// </summary>
        public Triangle()
        {
            ShapeType = ShapeType.Triangle;
        }
 
        #endregion Constructors
 
        #region Methods (1)
 
        // Public Methods (1) 
 
        /// <summary>
        /// Draws the specified g.
        /// </summary>
        /// <param name="g">The g.</param>
        public override void Draw(Graphics g)
        {
            var points = new PointF[3];
            points[0] = new PointF(X + Width / 2, Y);
            points[1] = new PointF(X + Width, Y + Height);
            points[2] = new PointF(X, Y + Height);
            if (IsFill)
                g.FillPolygon(BackgroundBrush, points);
            g.DrawPolygon(new Pen(ForeColor, Thickness), points);
            base.Draw(g);
        }
 
        #endregion Methods
    }
}
۰ نظر موافقین ۰ مخالفین ۰ ۱۴ خرداد ۹۴ ، ۱۳:۰۸
مهندس عشق هنر

در ادامه مطالب قبل
پیاده سازی پروژه نقاشی شی گرا  *قسمت اول *  
پیاده سازی پروژه نقاشی شی گرا *قسمت دوم* 

قبل از شروع توضیحات متد‌های کلاس Shape در ادامه پست‌های قبل در ^ و ^ ابتدا به تشریح یک تصویر می‌پردازیم.

نحوه ترسیم شی

خوب همانگونه که در تصویر بالا مشاده می‌نمایید، برای رسم یک شی چهار حالت متفاوت ممکن است پیش بیاید. (دقت کنید که ربع اول محور مختصات روی بوم گرافیکی قرار گرفته است، در واقع گوشه بالا و سمت چپ بوم گرافیکی نقطه (0 و 0) محور مختصات است و عرض بوم گرافیکی محور X‌ها و ارتفاع بوم گرافیکی محور Y‌ها را نشان می‌دهد)
  1. در این حالت StartPoint.X < EndPoint.X و StartPoint.Y < EndPoint.Y خواهد بود. (StartPoint نقطه ای است که ابتدا ماوس شروع به ترسیم می‌کند، و EndPoint زمانی است که ماوس رها شده و پایان ترسیم را مشخص می‌کند.)
  2. در این حالت StartPoint.X > EndPoint.X و StartPoint.Y > EndPoint.Y خواهد بود.
  3. در این حالت StartPoint.X > EndPoint.X و StartPoint.Y > EndPoint.Y خواهد بود.
  4. در این حالت StartPoint.X < EndPoint.X و StartPoint.Y > EndPoint.Y خواهد بود.

ابتدا یک کلاس کمکی به صورت استاتیک تعریف می‌کنیم که متدی جهت پیش نمایش رسم شی در حالت جابجایی ، رسم، و تغییر اندازه دارد.

۰ نظر موافقین ۰ مخالفین ۰ ۱۴ خرداد ۹۴ ، ۱۳:۰۲
مهندس عشق هنر

در ادامه مطالب قبل

پیاده سازی پروژه نقاشی شی گرا *قسمت اول*


با توجه به تجزیه و تحلیل انجام شده تمامی اشیا از کلاس پایه به نام Shape ارث بری دارند حال به توضیح کد‌های این کلاس می‌پردازیم. (به دلیل اینکه توضیحات این کلاس در دو پست نوشته خواهد شد برای این کلاس‌ها از partial class استفاده شده است)

۰ نظر موافقین ۰ مخالفین ۰ ۱۴ خرداد ۹۴ ، ۱۲:۳۹
مهندس عشق هنر

قصد داریم در طی چند پست متوالی، یک پروژه Paint را به صورت شی گرا پیاده سازی کنیم. خوب، پروژه ای که می‌خواهیم پیاده سازی کنیم باید دارای این امکانات باشه که مرحله به مرحله پیش میریم و پروزه کامل در نهایت در قسمت پروژه‌ها ی همین سایت قرار خواهد گرفت.

  1. قابلیت ترسیم اشیا روی بوم گرافیکی دلخواه
  2. قابلیت جابجایی اشیا
  3. قابلیت تغییر رنگ اشیا
  4. ترسیم اشیا توپر و تو خالی
  5. تعیین پهنای خط شی ترسیم شده
  6. تعیین رنگ پس زمینه در صورت تو پر بودن شی
  7. قابلیت پیش نمایش رسم شکل در زمان ترسیم اشیا
  8. توانایی انتخاب اشیا
  9. تعیین عمق شی روی بوم گرافیکی مورد نظر
  10. ترسیم اشیایی مانند خط، دایره، بیضی، مربع، مستطیل، لوزی، مثلث 
  11. قابلیت تغییر اندازه اشیا ترسیم شده

خوب برای شروع ابتدا یک پروژه از نوع Windows Application ایجاد می‌کنیم (البته برای این قسمت می‌توانیم یک پروژه Class Library ایجاد کنیم)

سپس یک پوشه به نام Models به پروزه اضافه نمایید.

خوب در این پروژه یک کلاس پایه به نام Shape در نظر می‌گیریم.

همه اشیا ما دارای نقطه شروع، نقطه پایان، رنگ قلم، حالت انتخاب، رنگ پس زمینه، نوع شی، .... می‌باشند که بعضی از خصوصیات را توسط خصوصیات دیگر محاسبه می‌کنیم. مثلا خاصیت Width و Height و X و Y توسط خصوصیات نقطه شروع و پایان می‌توانند محاسبه شوند.

ساختار کلاس‌های پروزه ما به صورت زیر است که مرحله به مرحله کلاس‌ها پیاده سازی خواهند شد.

۱ نظر موافقین ۰ مخالفین ۰ ۱۲ خرداد ۹۴ ، ۱۲:۱۳
مهندس عشق هنر