คอมพิวเตอร์กราฟิก โดยเฉพาะในเกม ต้องใช้ความใส่ใจในรายละเอียดอย่างมาก ทุกพิกเซลมีค่า และไม่ควรมีเอฟเฟ็กต์ภาพที่สั่นไหว นี่คือที่มาของการผสมอัลฟ่า เอ็นจิ้นกราฟิกเกือบทั้งหมดในปัจจุบันใช้การผสมอัลฟ่าบางรูปแบบเพื่อสร้างภาพที่สมจริงยิ่งขึ้น สำหรับการเปลี่ยนระหว่างวัตถุทั้งสองอย่างราบรื่น สีที่เกี่ยวข้องของวัตถุทั้งสองจะรวมกันและซ้อนทับกันบางส่วน ในบทความนี้ เราจะมาเรียนรู้วิธีการใช้การผสมอัลฟ่าใน C#
หัวข้อต่อไปนี้จะครอบคลุมในบทความนี้:
การผสมอัลฟ่าคืออะไร?
การผสมแบบอัลฟ่าเป็นเทคนิคสำหรับการรวมสองสีหรือระดับความโปร่งใสโดยใช้ความทึบของแต่ละสีเพื่อสร้างหนึ่งในสาม จะช่วยให้การเปลี่ยนทีละน้อยและผสมสีในภาพของคุณ การผสมแบบอัลฟ่ามักใช้สำหรับเอฟเฟกต์พื้นหลังและความโปร่งใส
ในคอมพิวเตอร์กราฟิก การผสมอัลฟ่าคือกระบวนการรวมภาพสองภาพเข้าด้วยกันเพื่อให้ภาพเหล่านั้นปรากฏเป็นภาพเดียว ผลลัพธ์ที่ได้คือภาพเดียวที่บางพื้นที่ดูโปร่งใส อัลกอริทึมทำงานโดยการคำนวณปริมาณความโปร่งใสระหว่างสีสองพิกเซล มันผสมผสานสองภาพโดยไม่ต้องสัมผัสพิกเซลใด ๆ
C# Alpha Blending API - ดาวน์โหลดฟรี
สำหรับการนำอัลฟ่าเบลนด์ไปใช้ใน C# เราจะใช้ API Aspose.Drawing for .NET เป็นไลบรารีกราฟิก 2D ข้ามแพลตฟอร์มสำหรับการวาดข้อความ รูปทรงเรขาคณิต และรูปภาพโดยทางโปรแกรม อนุญาตให้โหลด บันทึก และจัดการ รูปแบบไฟล์ที่รองรับ
โปรด ดาวน์โหลด DLL ของ API หรือติดตั้งโดยใช้ NuGet
PM> Install-Package Aspose.Drawing
ใช้การผสมอัลฟ่าโดยใช้ C
วิธีทั่วไปในการนำ Alpha Blending ไปใช้ใน C# คือการใช้เมธอด Color.FromArgb() เราสามารถใช้การผสมอัลฟาโดยทางโปรแกรมโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาสบิตแมป
- จากนั้น สร้างอ็อบเจกต์คลาสกราฟิกโดยใช้เมธอด Color.FromArgb() พร้อมพารามิเตอร์อัลฟ่าแชนเนล
- จากนั้นกำหนดวัตถุคลาส SolidBrush ด้วยสีและขนาดที่ระบุ
- หลังจากนั้นเรียกเมธอด FillEllipse() เพื่อวาดวงรีที่เติมข้อมูล
- ทำซ้ำขั้นตอนด้านบนเพื่อเพิ่มวงรีที่ทับซ้อนกันที่มีสีต่างกันเพื่อสร้างสีใหม่
- สุดท้าย บันทึกภาพผลลัพธ์โดยใช้เมธอด Save()
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการใช้การผสมอัลฟาใน C#
// ตัวอย่างโค้ดนี้สาธิตวิธีการใช้การผสมอัลฟ่าใน C#
// สร้างบิตแมป
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");
โหมดคอมโพสิตในการผสมอัลฟ่าโดยใช้ C#
เรายังสามารถใช้โหมดคอมโพสิตเพื่อควบคุมการผสมอัลฟาโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาสบิตแมป
- จากนั้น สร้างอ็อบเจกต์คลาสกราฟิกโดยใช้เมธอด Color.FromArgb() พร้อมพารามิเตอร์อัลฟ่าแชนเนล
- จากนั้นกำหนดวัตถุคลาส SolidBrush ด้วยสีและขนาดที่ระบุ
- ถัดไป ระบุ CompositingMode และ CompositingQuality สำหรับออบเจกต์กราฟิก
- หลังจากนั้นเรียกเมธอด FillEllipse() เพื่อวาดวงรีที่เติมข้อมูล
- ทำซ้ำขั้นตอนด้านบนเพื่อเพิ่มวงรีที่ทับซ้อนกันที่มีสีต่างกันเพื่อสร้างสีใหม่
- สุดท้าย บันทึกภาพผลลัพธ์โดยใช้เมธอด Save()
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีใช้โหมดคอมโพสิตเพื่อควบคุมการผสมอัลฟ่าใน C#
// ตัวอย่างโค้ดนี้สาธิตวิธีการใช้การผสมอัลฟ่าใน C#
// สร้างบิตแมป
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.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");
เรายังสามารถใช้โหมดรวม SourceOver โดยใช้รหัสต่อไปนี้ในขั้นตอนที่ # 4
graphics.CompositingMode = CompositingMode.SourceOver;
รับใบอนุญาตชั่วคราวฟรี
คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี เพื่อลองใช้ Aspose.Drawing for .NET โดยไม่มีข้อจำกัดในการประเมิน
บทสรุป
ในบทความนี้ เราได้เรียนรู้วิธีใช้เทคนิคการผสมอัลฟ่าโดยทางโปรแกรมใน C# นอกจากนี้ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Aspose.Drawing for .NET โดยใช้ เอกสารประกอบ และสำรวจคุณสมบัติต่างๆ ที่ API รองรับ ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี