کلاس Graphics از کتابخانه Drawing در سی شارپ C# ، هدف از این آموزش این است که شما را با طراحی گرافیک در سی شارپ آشنا کنیم. طراحی و نقاشی در سی شارپ با استفاده از Graphics Object انجام می شود.
اولین گام در این آموزش این است که شما یک پروژه از نوع ویندوز فرم در نرم افزار ویژوال استدیو ایجاد کنید برای این کار مسیر زیر را در Ide visual studio طی نمایید.
File>>New>>Project>>Visual C#>>Windows Forms Application
و یک نام دلخواه برای پروژه بنویسید و روی ایجاد کلیک کنید.به محض ایجاد شدن پروژه یک فرم در ناحیه طراحی قرار میگیرد.سپس بر روی فرم کلیک راست کنید و به Properties فرم بروید. و از قسمت رویداد ها یا Events گزینه paint را انتخاب و دو بار بر روی آن کلیک کنید تا صفحه ویرایش کدها نمایش داده شود.
ما در رویداد paint میتوانیم متد گرافیک آبجکت را فرخوانی کنیم و یک نمونه از آن ایجاد کنیم و با استفاده از این میتوانیم به آبجکت های آن برای طراحی گرافیکی دسترسی پیدا کنیم.
کد نمونه زیر این روند را به ما نشان میدهد :
private void Form1_Paint(object sender, PaintEventArgs e) { System.Drawing.Graphics graphicsObj; graphicsObj = this.CreateGraphics(); }
با این کد ما اکنون یک شی گرافیکی داریم برای استفاده از آن به یک Pen نیاز داریم.در ادامه آموزش نحوه ایجاد Pen را بیان میکنیم.
Graphics Object بدون استفاده از pen هیچ عملی برای طراحی نمیتواند انجام دهد.همانند دفتر نقاشی که بدون قلم نقاشی نمیتوان در آن چیزی رسم کرد.برای ایجاد قلم از دستور زیر میتوانیم استفاده کنیم :
Pen variable_name = new Pen (color, width);
در دستور بالا برای ایجاد pen یک نمونه از کلاس pen ایجاد میکنیم. و در قسمت variable_name یک نام دلخواه به آن اختصاص میدهیم و این کلاس دو پارامتر رنگ و اندازه قلم را دریافت میکند.به عنوان مثال ما میتوانیم یک قلم قرمز رنگ با عرض ۵ پیکسل ایجاد کنیم.
دستور زیر را مشاهده کنید.
private void Form1_Paint(object sender, PaintEventArgs e) { System.Drawing.Graphics graphicsObj; graphicsObj = this.CreateGraphics(); Pen myPen = new Pen(System.Drawing.Color.Red, 5); }
یک شی قلم خصوصیات دیگری از جمله DashStyle و غیره دارد که کار DashStyle تغییر سبک خط به روش های زیر است.
(Dash, DashDot, DashDotDot, Dot, Solid)
و سبک های رنگ و عرض را همان موقع ای که قلم را ایجاد میکنیم. بیان میشود.
myPen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDotDot; myPen.Color = System.Drawing.Color.RoyalBlue; myPen.Width = 3;
در ادامه به واسطه رویداد paint و آبجکت pen به رسم خط میپردازیم.
برای رسم خط در سی شارپ ما از متد DrawLine از کلاس Graphics Object استفاده میکنیم. آرگومان هایی که این متد دریافت میکند شامل pen که در بالا کلاس آن را ایجاد کردیم و همچنین نقطه شروع و پایان خط.
به عنوان مثال رسم یک خط از مختصات (۲۰و۲۰) به (۲۰۰و ۲۱۰) در رویداد paint بالا قرار میدهیم. سپس پروژه را اجرا میکنیم و نتیجه را میبینیم.
private void Form1_Paint(object sender, PaintEventArgs e) { System.Drawing.Graphics graphicsObj; graphicsObj = this.CreateGraphics(); Pen myPen = new Pen(System.Drawing.Color.Red, 5); graphicsObj.DrawLine(myPen, 20, 20, 200, 210); }
برای رسم مربع و مستطیل از کلاس GraphicsObject متد DrawRectangle() را انتخاب میکنیم . دو روش برای کار با این متود وجود دارد. روش اول این است که یک نمونه از شی Rectangle ایجاد کنیم و همراه کلاس Pen آن را به متود انتقال بدهیم و روش دوم این است که مستقیل شی Rectangle را به متود انتقال بدهیم.
مثال زیر در رویداد Paint یک مستطیل ایجاد میکند.
private void Form1_Paint(object sender, PaintEventArgs e) { System.Drawing.Graphics graphicsObj; graphicsObj = this.CreateGraphics(); Pen myPen = new Pen(System.Drawing.Color.Red, 5); Rectangle myRectangle = new Rectangle(20, 20, 250, 200); graphicsObj.DrawRectangle(myPen, myRectangle); }
وقتی پروژه را کامپایل و اجرا میکنیم خروجی دستور بالا به صورت تصویر زیر است :
اگر نیاز به رسم مستطیل های متعددی دارید نیازی به ایجاد یک شی جدید از Rectangle نیست. از آنجایی که شی Rectangle موجود است.کافی است متد Inflate() را فراخوانی کنیم و کلاس Rectangle را تغییر دهیم.
Rectangle myRectangle = new Rectangle(20, 20, 250, 200); myRectangle.Inflate(10, -20); Increase width by 10. Reduce height my 20
برای رسم بیضی و دایره در سی شارپ از متد DrawEllipse() از کلاس GraphicsObject استفاده میکنیم. همانند رسم مستطیل دو روش مشابه برای رسم دایره هم وجود دارد.
مثال زیر در رویداد Paint یک بیضی و دایره را ایجاد میکند.
private void Form1_Paint(object sender, PaintEventArgs e) { System.Drawing.Graphics graphicsObj; graphicsObj = this.CreateGraphics(); Pen myPen = new Pen(System.Drawing.Color.Green, 5); Rectangle myRectangle = new Rectangle(20, 20, 250, 200); graphicsObj.DrawEllipse(myPen, myRectangle); }
وقتی پروژه را کامپایل و اجرا میکنیم خروجی دستور بالا به صورت تصویر زیر است :
برای ایجاد متن گرافیکی از متد DrawText() استفاده میکنیم که به شرح زیر است :
graphicsobj.DrawString(string, font, brush, x, y);
برای فونت دادن به متن هم از کلاس فونت استفاده میکنیم. و همچنین برای رسم آن از شی Brush استفاده میکنیم شی براش همانند شی Pen عمل میکند و مقدار x و y را میگیرد که گوشه بالا و چپ متن را مشخص میکند.
در کلاس فونت ما میتوانیم نام فونت و سایز فونت و سبک فونت را تعیین کنیم :
Font myFont = new System.Drawing.Font("Helvetica", 40, FontStyle.Italic);
در شی Brush ما رنگ تعیین شده برای رسم را مشخص میکنیم :
Brush myBrush = new SolidBrush(System.Drawing.Color.Red);
مثال زیر در رویداد Paint یک متن گرافیکی را ایجاد میکند.
private void Form1_Paint(object sender, PaintEventArgs e) { System.Drawing.Graphics graphicsObj; graphicsObj = this.CreateGraphics(); Font myFont = new System.Drawing.Font("Helvetica", 40, FontStyle.Italic); Brush myBrush = new SolidBrush(System.Drawing.Color.Red); graphicsObj.DrawString("Hello C#", myFont, myBrush, 30, 30); } <pre>
وقتی پروژه را کامپایل و اجرا میکنیم خروجی دستور بالا به صورت تصویر زیر است :
امیدوارم این پست براتون مفید بوده باشه و ازش استفاده کنید. از طریق راه های ارتباطی زیر میتونید با ما برای درخواست آموزش های اختصاصی و انواع پروژه ها در ارتباط باشید.