• 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 1,550 23-04-2015 ساعت 09:24
    آخرین ارسال: The Arrow
    Note سوال ساخت تقویم فارسی در ویندوز 8.1 The Arrow 2 1,567 16-01-2015 ساعت 00:32
    آخرین ارسال: The Arrow
    Note دیتابیس SQLite در سی شارپ The Arrow 3 3,396 07-11-2014 ساعت 22:40
    آخرین ارسال: VBProgrammer
    Note FileAssociation در سی شارپ The Arrow 1 755 05-11-2014 ساعت 12:32
    آخرین ارسال: SOFTAFZAR
    Note آموزش کامل سی شارپ (ویدئو) xMAN 2 887 02-10-2014 ساعت 12:50
    آخرین ارسال: xMAN
    Note explorer سی شارپ cMan 1 634 30-08-2014 ساعت 12:07
    آخرین ارسال: SOFTAFZAR
    Note پیدا کردن متن در سی شارپ arfanz 7 1,313 27-08-2014 ساعت 01:10
    آخرین ارسال: The Arrow
    Note برنامه نویسی موازی با سی شارپ xMAN 0 574 05-08-2014 ساعت 12:01
    آخرین ارسال: xMAN
    Note جستجو در یک متن در سی شارپ arfanz 12 3,101 16-07-2014 ساعت 09:32
    آخرین ارسال: Stack OverFlow
    Note مخفف کنترلهای سی شارپ mshayan 2 1,167 15-07-2014 ساعت 13:32
    آخرین ارسال: mshayan

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