تبلیغات
banner
banner
banner
تبلیغات
banner

فیلم های آموزشی : 36 +

تعداد کاربران : 36 +

تعداد کل مطالب : 338 +

تعداد نظرات : 29 +

حضرت علی (ع): هر چیزی زکات دارد ، و زکات علم نشر آن است!

آموزش مقدماتی تا پیشرفته سی شارپ بخش دویست و پنجم


بنام اول برنامه نویس عالم

آموزش مقدماتی تا پیشرفته سی شارپ بخش دویست و پنجم

سلام به همه کاربران وب‌سایت لندلرن

قسمت دویست و پنجم


چگونه كار مي كند؟

اولين كاري كه در اين قسمت از ب رنامه انجام مي دهيم اين است كه يك شمارنده در كلاس ColorPaletteButton
ايجاد مي كنيم تا به وسيله ي آن بتوانيم وضعيت هر دكمه را تعيين كنيم

همانطور كه در اعضاي اين شمارنده نيز مشخص مي كنيد،

رنگ هر دكمه از پالت رنگ مي تواند سه حالت داشته باشد :

  • يـا بـه هـيچ يك از كليدهاي ماوس نسبت داده نشده باشد،
  • يا براي كليد چپ ماوس در نظر گرفته شده باشد
  • و يا براي كليد راست ماوس در نظـر گرفته شده باشد .

علاوه بر اين لازم است كه دو فيلد نيز به كلاس ColorPalette اضافه كنيم تا بتوانيم به وسيله ي آنها در اين كلاس تشخيص دهيم كه كداميك از دكمه هاي موجود در پالت رنگ به كليد چپ و راست ماوس نسبت داده شده اند .

وظيفه ي اين دو فيلد اين است كه در هر لحظه مشخص كنند كه چه دكمه اي براي كليد چپ ماوس و چه دكمـه اي بـراي كليـد راسـت ماوس در نظر گرفته شده است.

استفاده از اين دو فيلد باعث مي شود كه راحت تر بتوانيم دكمه ي انتخاب شده در پالت رنگ را تغيير دهيم.

به اين ترتيب ديگر لازم نيست هنگامي كه كاربر رنگ مورد نظر خود را تغيير داد در بين تمام دكمه هاي موجود در پالت رنگ حركت كرده و بررسي كنيم كه حرف L و يا R از روي كداميك از اين دكمه ها بايد حذف شود.

براي مثال هنگامي كه كاربر با اسـتفاده از كليـد چـپ مـاوس روي يكي از دكمه هاي موجود در پالت كليـك مـي كنـد، كـافي اسـت كـه خاصـيت ButtonAssignment دكمـه اي كـه LeftButton به آن اشاره مي كند را برابر با ButtonAssignment.None قرار داده و رنگ انتخـابي كـاربر را در فيلد LeftButton قرار دهيم.

سپس خاصيت ButtonAssignment در دكمه اي كه جديداً انتخـاب شـده است را نيز برابر با ButtonAssignment.LeftButton قرار دهيم.

تنها متدي كه در اين قسمت ممكن است مقداري گيج كننده به نظر برسد، متـد ColorPalette_MouseUp اسـت.

در اين متد قبل از اينكه دكمه اي از پالت رنگ را براي كليد چپ ماوس در نظر بگيريم، بايد بررسي كنيم كه آن دكمـه بـراي كليـد راست مشخص نشده باشد.

در اين صورت مي توانيم خاصيت LeftColor را برابر با رنگ دكمه اي كه توسط كاربر انتخاب شده است قرار دهيم :

سپس بايد بررسي كنيم كه آيا قبل از اين نيز رنگي براي دكمه ي چپ ماوس در نظر گرفته شده بود، كه در اين صورت بايد خاصيت ButtonAssignment آن را به None برگردانيم و متد Invalidate را براي آن فراخواني كنيم تا حـرف L از روي اين دكمه از پالت رنگ حذف شود:

عــلاوه بــر ايــن بايــد خاصــيت ButtonAssignment دكمــه اي كــه جديــداً انتخــاب شــده اســت را نيــز برابــر بــا LeftButton قرار دهيم و متد Invalidate را براي آن فراخواني كنيم.

به اين ترتيب هنگـام ترسـيم م جـدد فـرم، حرف L بر روي اين دكمه از پالت رنگ نمايش داده مي شود.

همچنين بايد خاصيت LeftButton را نيز برابر بـا دكمـه اي قرار دهيد كه انتخاب شده است تا در مواقع نياز بتوانيم از آن استفاده كنيم :

در آخر نيز همانند قسمتهاي قبل رويداد LeftClick را فراخواني مي كنيم :

بقيه ي متد ColorPalette_MouseUp نيز همانند اين قسمت است، با اين تفاوت كـه دسـتورهاي آن بـراي كليـد رايت ماوس انجام مي شود.

به اين ترتيب كه ابتدا بررسي مي كنيم دكمه اي كه براي كليد راست ماوس انتخاب شده است، به كليـد چپ تعلق نداشته باشد، در اين صورت رنگ اين دكمه را به خاصيت RightColor نسبت مي دهيم و … .

بعد از اتمام اين متد، به متد Draw در كلاس ColorPaletteButton مي رويم .

در اين متد بعد از رسم يك دكمه در پالت رنگ، بررسي مي كنيم كه آيا اين دكمه به كليدي از ماوس نسبت داده شده است و در اين صورت حرفي متن اسـب بـا كليـد ماوس را روي اين دكمه مي نويسيم (در مورد ترسيم متن در اين قسمت به اختصار توضيح داده شده است، امـا در قـسمتهاي بعـدي ايــن دوره در ايــن مــورد بيــشتر صــحبت خــواهيم كــرد ).

بــراي رســم يــك مــتن ابتــدا بايــد بــا ايجــاد شــيئ اي از كــلاس System.Drawing.Fontفونت متن را مشخص كنـيم.

در اينجـا فـونتي از نـوع verdana بـا انـدازه ي ۸ و Bold ايجاد مي كنيم :

ادامه این قسمت را در قسمت دویست و ششم ببینید.

 


درباره نویسنده
سجاد اسدی
   سجاد اسدی

سجاد اسدی هستم دانشجوی رشته نرم افزار و علاقه مند به تدریس و یادگیری دروس مرتبط با تکنولوژی نرم افزار و اینترنت اشیاء جهت ارتباط با بنده مراجعه شود به آیدی سروش و تلگرام : @ordervira و پیج بنده در اینستاگرام instagram.com/sajjadred11 ""اللهم صل علی محمد و آل محمد"" برای شروع هیچ وقت دیر نیست. "الهم عجل لولیک الفرج"

دیدگاه بگذارید

avatar
  اشتراک  
اطلاع رسانی

aparat کانال آپارات

soroush کانال سروش

کانال آی گپ