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

کد:
using System.Drawing.Drawing2D;

[ATTACH=CONFIG]351[/ATTACH]

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

کد php:
protected override void OnPaint(PaintEventArgs paintEvnt)
{
    
Graphics gfx paintEvnt.Graphics;
    
Pen myPen = new Pen(Color.Black);
    
gfx.SmoothingMode SmoothingMode.None;
    
gfx.DrawEllipse(myPen2020100100);
    
gfx.SmoothingMode SmoothingMode.AntiAlias;
    
gfx.DrawEllipse(myPen15020100100);
    
gfx.PixelOffsetMode PixelOffsetMode.HighQuality;
    
gfx.DrawEllipse(myPen20150100100);


SmoothingMode

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

[HTML]
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.
[/HTML]

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

PixelOffsetMode

PixelOffsetMode رو میشه ارتقا یافته ی SmoothingMode دونست این نظر شخصی خودمه و نتیجه مقایسه هایی هست که انجام دادم. این خاصیت هم مثل SmoothingMode عمل میکنه با این تفاوت که اشیای render شده به نظر smooth تر هستن.
شما میتونین eNum های زیر رو برای PixelOffsetMode انتخاب کنید:
[HTML]
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.
[/HTML]

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

[تصویر:  attachment.php?attachmentid=352&d=1353071630]

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

کپی مطلب تنها با ذکر منبع مجاز است.

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note کتاب آموزش Parse کردن یک خبر خوان وردپرسی برای ویندوزفون The Arrow 0 980 23-04-2015 ساعت 09:24
آخرین ارسال: The Arrow
Note سوال ساخت تقویم فارسی در ویندوز 8.1 The Arrow 2 994 16-01-2015 ساعت 00:32
آخرین ارسال: The Arrow
Note دیتابیس SQLite در سی شارپ The Arrow 3 2,433 07-11-2014 ساعت 22:40
آخرین ارسال: VBProgrammer
Note FileAssociation در سی شارپ The Arrow 1 567 05-11-2014 ساعت 12:32
آخرین ارسال: SOFTAFZAR
Note آموزش کامل سی شارپ (ویدئو) xMAN 2 683 02-10-2014 ساعت 12:50
آخرین ارسال: xMAN
Note explorer سی شارپ cMan 1 485 30-08-2014 ساعت 12:07
آخرین ارسال: SOFTAFZAR
Note پیدا کردن متن در سی شارپ arfanz 7 879 27-08-2014 ساعت 01:10
آخرین ارسال: The Arrow
Note برنامه نویسی موازی با سی شارپ xMAN 0 451 05-08-2014 ساعت 12:01
آخرین ارسال: xMAN
Note جستجو در یک متن در سی شارپ arfanz 12 2,242 16-07-2014 ساعت 09:32
آخرین ارسال: Stack OverFlow
Note مخفف کنترلهای سی شارپ mshayan 2 849 15-07-2014 ساعت 13:32
آخرین ارسال: mshayan

کاربرانِ درحال بازدید از این موضوع:   1 مهمان