سلام تو این پست میخوایم درباره Antialiasing / Smoothing صحبت کنیم. احتمالا با این واژه ها آشنا هستید تو بیشتر بازی های کامپیوتری اگر یه نگاهی تو تنظیمات گرافیک بندازید احتمالا یکی از این دو کلمه رو میبینید. Antialiasing یا Smoothing برای صاف یا "خوش نما سازی" لبه های اشیا بکار میره هر چی مقدار Antialiasing بالاتر باشه گرافیک بهتر و زمان رندر بیشتری خواهیم داشت. ما میخوایم تو این پست در مورد Antialiasing سی شارپ بحث کنیم و انواع اون رو با هم مقایسه کنیم. برای شروع ابتدا پروژه خودتون رو ایجاد کنید و در قسمت Name space ها System.Drawing.Drawing2D رو اضاف کنید به این شکل:

using System.Drawing.Drawing2D;

[align=center][ATTACH=CONFIG]351[/ATTACH][/align]

بعد اضافه کردن name space این کد رو به پروژه اضافه کنید

protected override void OnPaint(PaintEventArgs paintEvnt)
{
    Graphics gfx = paintEvnt.Graphics;
    Pen myPen = new Pen(Color.Black);
    gfx.SmoothingMode = SmoothingMode.None;
    gfx.DrawEllipse(myPen, 20, 20, 100, 100);
    gfx.SmoothingMode = SmoothingMode.AntiAlias;
    gfx.DrawEllipse(myPen, 150, 20, 100, 100);
    gfx.PixelOffsetMode = PixelOffsetMode.HighQuality;
    gfx.DrawEllipse(myPen, 20, 150, 100, 100);
}

SmoothingMode

خاصیت SmoothingMode لبه های شی گرافیکی ما رو با صاف(smooth) کردن اون رندر میکنه. شما میتونین eNum های زیر رو انتخاب کنید:

Default: Specifies the default mode.
AntiAlias: Specifies antialiased rendering.
HighQuality: Specifies high quality, low speed rendering.
HighSpeed: Specifies high speed, low quality rendering.
Invalid: Specifies an invalid mode.
None: Specifies no antialiasing.

میشه گفت HighQuality همون AntiAlias و HighSpeed همون None هست و با هم فرقی ندارن.

PixelOffsetMode

PixelOffsetMode رو میشه ارتقا یافته ی SmoothingMode دونست این نظر شخصی خودمه و نتیجه مقایسه هایی هست که انجام دادم. این خاصیت هم مثل SmoothingMode عمل میکنه با این تفاوت که اشیای render شده به نظر smooth تر هستن. شما میتونین eNum های زیر رو برای PixelOffsetMode انتخاب کنید:

Default: Specifies the default mode.
Half: Specifies that pixels are offset by -.5 units, both horizontally and vertically, for high speed antialiasing.
HighQuality: Specifies high quality, low speed rendering.
HighSpeed: Specifies high speed, low quality rendering.
Invalid: Specifies an invalid mode.
None: Specifies no pixel offset.

در تصویر پایین ، دایره اول(سمت چپ-بالا) روی SmoothingMode.None تنظیم شده، دایره دوم(سمت راست-بالا) روی SmoothingMode.AntiAlias و دایره سوم (سمت چپ-پایین) روی PixelOffsetMode.HighQuality تنظیم شده.

[align=center][/align]

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

[color=#FF0000]کپی مطلب تنها با ذکر منبع مجاز است.[/color]