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

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

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

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

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

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

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


 به نام خداوند جان آفرین حکیم سخن در زبان آفرین



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

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

قسمت صد و نود و سوم


ايجاد كلاس GraphicsItem:

در اين برنامه مي خواهيم دو ابزار ابتدايي براي رسم ايجاد كنيم :

دايره و مستطيل. هر كدام از اين ابزارها نياز دارند كـه بداننـد در چـه ناحيه اي از محيط رسم (و همچنين در چه قسمتي از صفحه نمايش) بايد قرار بگيرند،

چه رنگي بايد داشته باشند و … بنـابراين يـك كلاس پايه ايجاد مي كنيم و تمام اين موارد را در آن قرار مي دهيم .

سپس كلاسهاي مربـوط بـه دايـره و مـستطيل را از آن مـشتق خواهيم كرد.

امتحان كنيد: ايجاد كلاسهاي GraphicsItem و GraphicsCircle

  • ابتدا بايد يك كلاس جديد به برنامه اضافه كنـيم .
  • بنـابراين در پنجـره ي Solution Explorer روي نـام پروژه كليك راست كـرده و از منـوي بـاز شـده گزينـه ي …Add Class را انتخـاب كنيـد .
  • سـپس عبـارت GraphicsItem.cs را در كادر Name وارد كرده و روي دكمه ي OK كليك كنيد.
  • در ايجاد اين كلا س بايد از كلاسهاي موجود در فـضاي نـام Drawing.System اسـتفاده كنـيم .
  • بنـابراين بـا استفاده از دستور زير، اين فضاي نام را به برنامه اضافه كنيد:
  • كد زير را به کلاس جدید  اضافه كنيد تا كلاس GraphicsItem ايجاد شود.
  • دقت كنيد كـه نبايد اجاز ه دهيم شيئ اي از اين كلاس مشتق شود و فقط بايد به عنوان كلاس پايه براي ديگر كلاسها مورد استفاده قرار گيرد،
  • بنابراين آن را از نوع abstract تعريف مي كنيم.
  • با استفاده از پنجره ي Solution Explorer كلاس ديگري به نـام GraphicsCircle.cs ايجاد كرده و كد زير را به آن اضافه كنيد تا كلاس GraphicsCricle ايجاد شود.
  • دقت كنيد كه اين كـلاس بايد از كلاس GraphicsItem مشتق شده و متد Draw نيز در آن override شود.

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

كلاس GraphicsItem در اين قسمت شامل تمامي اعضايي است كه بايد در ابزارهاي ابتدايي ترسيم وجود داشـته باشـند.

بنابراين تمام كلاسهاي مربوط به ابزارهاي ترسيم مانند GraphicsCircle بايد از اين كلاس مشتق شوند،

اما نبايد اجازه دهيم كه شيئ اي به صورت مستقيم از اين كلاس نمونه سازي شود. پس اين كلاس را از نوع abstract معرفي مي كنيم .

همچنين در تمام ابزارهاي ترسيم بايد متدي به نام Draw داشته باشيم تا به وسيله ي آن بتوانيم شـكل را رسـم كنـيم .

امـا پيـاده سازي اين متد در هر ابزاري متفاوت است .

پس اين متد را به صورت abstract معرفي مي كنيم تا تمام كلاس هـايي كـه از GraphicsItem مشتق مي شوند، اين متد را override كرده و پياده سازي مربوط به خود را در آن قرار دهند.

با استفاده از متد SetPoint مي توانيم با استفاده از موقعيت كنوني ماوس و نيز رنگ و انداز ه ي مشخص شده توسـط پـارامتر ها، به فيلد هاي موجود در شيئ مقدار دهيم.

در اين متد ابتدا يك مستطيل ايجاد مي كنيم .

معمولاً براي رسم يك دايره از مركز و شعاع آن استفاده مي كنند، اما در NET. براي رسم يك دايره بايد مستطيل اي كه آن دايره را دربر مي گيرد را مشخص كنيد.

بنابراين با استفاده از موقعيت ماوس و نيز اندازه ي شكلي كه بايد ترسيم شـود (كـه بـا اسـتفاده از پارامتر graphicSize به متد ارسال مي شود)، موقعيت گوشه ي بالا و سمت چپ مستطيل را بدست مي آوريم و مـستطيل را ايجاد مي كنيم .

متد سازنده ي كلاس Rectangle براي ايجاد يك مستطيل علاوه بر اين دو پارامتر به طول و عرض مستطيل نيز نيـاز دارد كه براي آنها از مقدار graphicSize استفاده مي كنيم.

در انتها نيز رنگ شكل و اينكه آيا بايد به صورت توپر رسم شود يـا نه را نيز در فيلد هاي مرتبط در كلاس ذخيره مي كنيم.

بعد از اتمام كلاس GraphicsItem ،كلاس GraphicsCircle را از آن مشتق مي كنيم .

در اين كـلاس لازم نيست متد و يا فيلد خاصي را ايجاد كنيم و فقط بايد متد Draw را كه در كلاس پايه به صورت abstract مـشخص شـده است override كنيم .

اين متد همانطور كه از نام آن مشخص است، وظيفه ي رسم شكل را بر عهده دارد. رسـم يـك شـكل نيز معمولاً به صورت فراخواني چند متد ساده از كلاس Graphics صورت مي گيرد .

در اين متد احتياج داريم كه يك دايـره را در صفحه رسم كنيم، بنابراين از متد FillEllipse استفاده مي كنيم .

اين متد بر حسب پارامترهايي كه به آن فرستاده مي شود مي توانـد دايـره هـا و يـا بيـضي هـاي تـوپر را در صـفحه رسـم كنـد .

بـراي رسـم دايـره و يـا بيـضي معمـولي بايـد از متـد DrawEllipse استفاده كنيم.

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

براي اين كار بايد شيئ اي از كلاس Brush و يا كلاسهاي مشتق شده از آن استفاده كنيم .

در اينجا بـر اي تعيـين نوع قلم مو، يك شيئ از كلاس SolidBrush با رنگ مشخص شده در فيلد color ايجاد مي كنيم .

در حقيقت با فراخواني متد FillEllipse به اين صورت، به اين متد مي گوييم كه با استفاده از قلم موي مشخص شـده در شيئ objSolidBrush ،دايره اي را در محدوده ي تعيين شده به وسيله ي rectangle رسم كند.

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


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

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

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

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

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

soroush کانال سروش

کانال آی گپ