ترکیب آلفا در سی شارپ

گرافیک کامپیوتری به خصوص در بازی ها نیاز به توجه زیادی به جزئیات دارد. هر پیکسل مهم است و نباید جلوه‌های بصری آزاردهنده‌ای وجود داشته باشد. اینجاست که ترکیب آلفا وارد عمل می شود. تقریباً تمام موتورهای گرافیکی امروزه از نوعی ترکیب آلفا برای ایجاد تصاویر واقعی تر استفاده می کنند. برای انتقال صاف بین هر دو شی، رنگ های مربوط به دو شی با هم ترکیب شده و تا حدی همپوشانی دارند. در این مقاله با نحوه پیاده سازی ترکیب آلفا در سی شارپ آشنا می شویم.

موضوعات زیر در این مقاله پوشش داده خواهد شد:

  1. ترکیب آلفا چیست
  2. C# Alpha Blending API
  3. نحوه اجرای ترکیب آلفا
  4. حالت های ترکیبی در ترکیب آلفا

ترکیب آلفا چیست؟

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

در گرافیک کامپیوتری، ترکیب آلفا فرآیند ترکیب دو تصویر است به طوری که آنها به صورت یک ظاهر شوند. نتیجه یک تصویر واحد است که در آن برخی مناطق شفاف به نظر می رسند. این الگوریتم با محاسبه میزان شفافیت بین رنگ های دو پیکسلی کار می کند. این دو تصویر را بدون دست زدن به هیچ پیکسلی ترکیب می کند.

C# Alpha Blending API - دانلود رایگان

برای پیاده سازی ترکیب آلفا در سی شارپ، از API Aspose.Drawing for .NET استفاده خواهیم کرد. این یک کتابخانه گرافیکی دوبعدی بین پلتفرمی برای ترسیم متن، هندسه و تصاویر به صورت برنامه‌ریزی شده است. این امکان بارگیری، ذخیره و دستکاری [فرمت های فایل پشتیبانی شده] را فراهم می کند.

لطفاً یا DLL API را دانلود کنید یا با استفاده از NuGet آن را نصب کنید.

PM> Install-Package Aspose.Drawing

پیاده سازی Alpha Blending با استفاده از C#

رایج ترین روش برای پیاده سازی ترکیب آلفا در سی شارپ استفاده از متد Color.FromArgb() است. با دنبال کردن مراحل زیر می توانیم ترکیب آلفا را به صورت برنامه ای پیاده سازی کنیم:

  1. ابتدا یک نمونه از کلاس Bitmap ایجاد کنید.
  2. سپس شی کلاس Graphics را با استفاده از متد Color.FromArgb() با پارامتر کانال آلفا ایجاد کنید.
  3. سپس یک شی کلاس SolidBrush با رنگ و اندازه مشخص شده تعریف کنید.
  4. پس از آن، متد FillEllipse() را برای رسم بیضی پر شده فراخوانی کنید.
  5. مراحل بالا را تکرار کنید تا بیضی های پر شده بیشتری را با رنگ های مختلف اضافه کنید تا رنگ های جدید ایجاد شود.
  6. در نهایت با استفاده از متد Save() تصویر خروجی را ذخیره کنید.

نمونه کد زیر نحوه پیاده سازی ترکیب آلفا در سی شارپ را نشان می دهد.

// این مثال کد نحوه پیاده سازی ترکیب آلفا در سی شارپ را نشان می دهد.
// یک بیت مپ ایجاد کنید
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// اولیه سازی گرافیک
Graphics graphics = Graphics.FromImage(bitmap);

// قلم مو رنگ را تعریف کنید
var solidBrush1 = new SolidBrush(Color.FromArgb(128, 255, 0, 0));
var solidBrush2 = new SolidBrush(Color.FromArgb(128, 0, 255, 0));
var solidBrush3 = new SolidBrush(Color.FromArgb(128, 0, 0, 255));

// بیضی ها را بکشید
graphics.FillEllipse(solidBrush1, 300, 100, 400, 400);
graphics.FillEllipse(solidBrush2, 200, 300, 400, 400);
graphics.FillEllipse(solidBrush3, 400, 300, 400, 400);

// بیت مپ را ذخیره کنید
bitmap.Save(@"C:\Files\AlphaBlending.png");
پیاده سازی Alpha Blending با استفاده از C#

پیاده سازی Alpha Blending با استفاده از C#

حالت های ترکیبی در ترکیب آلفا با استفاده از سی شارپ

همچنین می‌توانیم از حالت‌های ترکیبی برای کنترل ترکیب آلفا با دنبال کردن مراحل زیر استفاده کنیم:

  1. ابتدا یک نمونه از کلاس Bitmap ایجاد کنید.
  2. سپس شی کلاس Graphics را با استفاده از متد Color.FromArgb() با پارامتر کانال آلفا ایجاد کنید.
  3. سپس یک شی کلاس SolidBrush با رنگ و اندازه مشخص شده تعریف کنید.
  4. سپس CompositingMode و CompositingQuality را برای شی Graphics مشخص کنید.
  5. پس از آن، متد FillEllipse() را برای رسم بیضی پر شده فراخوانی کنید.
  6. مراحل بالا را تکرار کنید تا بیضی های پر شده بیشتری را با رنگ های مختلف اضافه کنید تا رنگ های جدید ایجاد شود.
  7. در نهایت با استفاده از متد Save() تصویر خروجی را ذخیره کنید.

نمونه کد زیر نحوه استفاده از حالت ترکیبی برای کنترل ترکیب آلفا در سی شارپ را نشان می دهد.

// این مثال کد نحوه پیاده سازی ترکیب آلفا در سی شارپ را نشان می دهد.
// یک بیت مپ ایجاد کنید
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// اولیه سازی گرافیک
Graphics graphics = Graphics.FromImage(bitmap);

// قلم مو رنگ را تعریف کنید
var solidBrush1 = new SolidBrush(Color.FromArgb(128, 255, 0, 0));
var solidBrush2 = new SolidBrush(Color.FromArgb(128, 0, 255, 0));
var solidBrush3 = new SolidBrush(Color.FromArgb(128, 0, 0, 255));

// حالت ترکیب را برای بیضی های همپوشانی تنظیم کنید،
// رنگ بیضی ها با هم ترکیب نمی شوند.
graphics.CompositingMode = CompositingMode.SourceCopy;

// رنگ بیضی ها با یکدیگر ترکیب می شوند.
//graphics.CompositingMode = CompositingMode.SourceOver;

// کیفیت ترکیب شی Graphics را تنظیم کنید.
graphics.CompositingQuality = CompositingQuality.GammaCorrected;

// بیضی ها را بکشید
graphics.FillEllipse(solidBrush1, 300, 100, 400, 400);
graphics.FillEllipse(solidBrush2, 200, 300, 400, 400);
graphics.FillEllipse(solidBrush3, 400, 300, 400, 400);

// بیت مپ را ذخیره کنید
bitmap.Save(@"C:\Files\AlphaBlending_SourceOver.png");
SourceCopy Compsite Mode در Alpha Blending با استفاده از C#

SourceCopy Compsite Mode در Alpha Blending با استفاده از C#

همچنین می‌توانیم از حالت ترکیبی SourceOver با استفاده از کد زیر در مرحله 4 استفاده کنیم.

graphics.CompositingMode = CompositingMode.SourceOver;
SourceOver Compsite Mode در ترکیب آلفا با استفاده از C#

SourceOver Compsite Mode در ترکیب آلفا با استفاده از C#

مجوز موقت رایگان دریافت کنید

برای امتحان Aspose.Drawing برای دات نت بدون محدودیت ارزیابی می توانید یک مجوز موقت رایگان دریافت کنید.

نتیجه

در این مقاله نحوه پیاده سازی تکنیک ترکیب آلفا را به صورت برنامه نویسی در سی شارپ یاد گرفتیم. علاوه بر این، می‌توانید درباره Aspose.Drawing برای دات‌نت با استفاده از مستندات اطلاعات بیشتری کسب کنید و ویژگی‌های مختلف پشتیبانی شده توسط API را بررسی کنید. در صورت وجود هرگونه ابهام، لطفاً با ما در [تالار گفتمان پشتیبانی رایگان11 تماس بگیرید.

همچنین ببینید