บิตแมปใช้ในการสร้างและจัดเก็บกราฟิกคอมพิวเตอร์ ภาพบิตแมปใช้กันอย่างแพร่หลายในหน้าเว็บและอุปกรณ์ดิจิทัล เช่น กล้อง สมาร์ทโฟน เป็นต้น ประเภทไฟล์กราฟิกบิตแมปที่พบมากที่สุดคือ BMP, GIF, PNG และ JPEG. ในบทความนี้ เราจะมาเรียนรู้วิธีสร้างบิตแมปใน C#
หัวข้อต่อไปนี้จะครอบคลุมในบทความนี้:
- C# API เพื่อสร้าง โหลด เติม และวาดบิตแมป
- สร้างบิตแมปใหม่ตั้งแต่เริ่มต้น
- สร้างบิตแมปจาก Byte Array
- บันทึกบิตแมปเป็นไฟล์รูปภาพ
- วาดรูปร่างบนบิตแมป
- วาดข้อความบนภาพบิตแมป
- เติมบิตแมปด้วยสีทึบ
- โหลดภาพเป็นบิตแมป
- ปรับขนาดรูปภาพที่มีอยู่โดยใช้ Bitmap
C# API เพื่อสร้าง โหลด เติม และวาดบิตแมป - ดาวน์โหลดฟรี
ในการสร้างบิตแมป เราจะใช้ API Aspose.Drawing for .NET เป็นไลบรารีกราฟิก 2D ข้ามแพลตฟอร์มสำหรับการวาดข้อความ รูปทรงเรขาคณิต และรูปภาพโดยทางโปรแกรม อนุญาตให้โหลด บันทึก และจัดการ รูปแบบไฟล์ที่รองรับ
โปรด ดาวน์โหลด DLL ของ API หรือติดตั้งโดยใช้ NuGet
PM> Install-Package Aspose.Drawing
สร้างบิตแมปใหม่ใน C#
เราสามารถสร้างบิตแมปใหม่ตั้งแต่เริ่มต้นโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างบิตแมปใหม่โดยใช้คลาสบิตแมปที่มีขนาดและรูปแบบที่ระบุ
- จากนั้น สร้างวัตถุกราฟิกใหม่จากวัตถุบิตแมปโดยใช้เมธอด FromImage()
- จากนั้น เริ่มต้นออบเจกต์คลาส Pen ด้วยสีและขนาดที่ระบุ
- หลังจากนั้นให้เรียกใช้เมธอด DrawEllipse() เพื่อวาดวงรีตามขนาดที่กำหนด
- สุดท้าย บันทึกภาพผลลัพธ์โดยใช้เมธอด Save()
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างบิตแมปใหม่ใน C#
// ตัวอย่างรหัสนี้สาธิตวิธีการสร้างบิตแมปใหม่โดยทางโปรแกรมใน C#
// เริ่มต้นวัตถุบิตแมป
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
// สร้างกราฟิกใหม่
Graphics graphics = Graphics.FromImage(bitmap);
// เริ่มต้นปากกา
Pen pen = new Pen(Color.Red, 5);
// วาดสี่เหลี่ยมผืนผ้า
graphics.DrawEllipse(pen, new Rectangle(0, 0, 700, 700));
// บันทึกไฟล์
bitmap.Save(@"C:\Files\Drawings\output.png");
สร้างบิตแมปจาก Byte Array ใน C#
เราสามารถสร้างบิตแมปจากไบต์สตรีมหน่วยความจำโดยทำตามขั้นตอนด้านล่าง:
- อ่านไฟล์ภาพเป็นอาร์เรย์ไบต์
- สร้างอินสแตนซ์ใหม่ของ MemoryStream โดยใช้วัตถุอาร์เรย์ไบต์
- สร้างบิตแมปใหม่โดยใช้คลาส Bitmap กับวัตถุ MemoryStream
- สุดท้าย บันทึกภาพโดยใช้เมธอด Save()
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างบิตแมปจาก Byte Array โดยใช้ MemoryStream ใน C#
// ตัวอย่างโค้ดนี้สาธิตวิธีสร้างบิตแมปใหม่จากหน่วยความจำสตรีมไบต์ใน C#
// โหลดภาพและอ่านไบต์ทั้งหมด
var file = File.ReadAllBytes(@"C:\Files\Drawings\sample.jpg");
// สร้างสตรีมหน่วยความจำ
MemoryStream stream = new MemoryStream(file);
// สร้างบิตแมปใหม่
Bitmap bitmap = new Bitmap(stream);
// บันทึกไฟล์
bitmap.Save(@"C:\Files\Drawings\output.jpg");
C# บันทึกบิตแมปเป็นไฟล์
เราสามารถบันทึกภาพบิตแมปเป็นไฟล์ในรูปแบบไฟล์ที่รองรับต่างๆ โดยทำตามขั้นตอนที่กล่าวถึงก่อนหน้านี้ อย่างไรก็ตาม เราจำเป็นต้องพูดถึงนามสกุลของรูปแบบไฟล์บันทึกที่ต้องการในขณะที่บันทึกไฟล์รูปภาพโดยใช้เมธอด Save(string filename, ImageFormat) ในขั้นตอนสุดท้าย
- บันทึกบิตแมปเป็นไฟล์ BMP
bitmap.Save(@"C:\Files\output.bmp", ImageFormat.Bmp);
- บันทึกบิตแมปเป็นไฟล์ PNG
bitmap.Save(@"C:\Files\output.png", ImageFormat.Png);
- บันทึกบิตแมปเป็นไฟล์ JPG
bitmap.Save(@"C:\Files\output.jpg", ImageFormat.Jpeg);
- บันทึกบิตแมปเป็นไฟล์ GIF
bitmap.Save(@"C:\Files\output.gif", ImageFormat.Gif);
C# วาดบนบิตแมป
เราสามารถวาดรูปร่างและรูปภาพต่าง ๆ บนบิตแมปได้โดยทำตามขั้นตอนที่กล่าวไว้ก่อนหน้านี้ อย่างไรก็ตาม เราเพียงแค่ต้องใช้วิธีเฉพาะของรูปร่างในการวาดรูปร่างที่ต้องการ
เราสามารถวาดรูปร่างต่อไปนี้โดยใช้วิธีการเฉพาะที่ให้ไว้ในการวาดบนบิตแมป:
- อาร์ค: เราสามารถวาดอาร์คโดยใช้เมธอด DrawArc()
- Bezier: เราสามารถวาด Bezier ได้โดยใช้เมธอด DrawBezier()
- ชุดของเส้นโค้งเบซิเยร์: เราสามารถวาดชุดของเส้นโค้งเบซิเยร์โดยใช้เมธอด DrawBeziers()
- Curve: เราสามารถวาดรูปร่างโค้งได้โดยใช้เมธอด DrawCurve()
- ClosedCurve: เราสามารถวาดเส้นโค้งปิดโดยใช้เมธอด DrawClosedCurve()
- วงรี: เราสามารถวาดวงรีโดยใช้เมธอด DrawEllipse()
- เส้น: เราสามารถวาดเส้นโดยใช้เมธอด DrawLine()
- ชุดของเส้น: เราสามารถวาดชุดของเส้นโดยใช้เมธอด DrawLines()
- เส้นทาง: เราสามารถวาดเส้นทางโดยใช้เมธอด DrawPath()
- พาย: เราสามารถวาดพายโดยใช้เมธอด DrawPie()
- รูปหลายเหลี่ยม: เราสามารถวาดรูปหลายเหลี่ยมโดยใช้เมธอด DrawPolygon()
- สี่เหลี่ยมผืนผ้า: เราสามารถวาดรูปสี่เหลี่ยมผืนผ้าโดยใช้เมธอด DrawRectangle()
- ชุดสี่เหลี่ยมผืนผ้า: เราสามารถวาดชุดสี่เหลี่ยมผืนผ้าโดยใช้เมธอด DrawRectangles()
เราสามารถวาดภาพบนบิตแมปด้วยวิธีต่อไปนี้:
- ไอคอน: เราสามารถวาดภาพที่แสดงโดยไอคอนที่ระบุภายในพื้นที่ที่ระบุโดยโครงสร้างสี่เหลี่ยมผืนผ้าโดยใช้เมธอด DrawIcon()
- ภาพ: เราสามารถวาดภาพใด ๆ ที่ระบุโดยใช้เมธอด DrawImage()
C# วาดข้อความบนบิตแมป
เราสามารถวาดสตริงใด ๆ บนบิตแมปโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างบิตแมปใหม่โดยใช้คลาสบิตแมปที่มีขนาดที่ระบุ
- จากนั้น สร้างวัตถุกราฟิกใหม่จากวัตถุบิตแมปโดยใช้เมธอด FromImage()
- จากนั้นกำหนดออบเจกต์คลาสฟอนต์ด้วยตระกูลฟอนต์ สไตล์ และขนาดที่ต้องการ
- ในขณะเดียวกัน ให้เริ่มต้นวัตถุ SolidBrush ด้วยสีที่ระบุ
- หลังจากนั้น เรียกใช้เมธอด DrawString() โดยมีข้อความแสดง ฟอนต์ และบรัชเป็นอาร์กิวเมนต์
- สุดท้าย บันทึกภาพผลลัพธ์โดยใช้เมธอด Save()
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการวาดข้อความบนบิตแมปใน C#
// ตัวอย่างรหัสนี้สาธิตวิธีการวาดข้อความบนบิตแมปใหม่โดยทางโปรแกรมใน C#
// เริ่มต้นวัตถุบิตแมป
Bitmap bitmap = new Bitmap(500,200);
// สร้างกราฟิกใหม่
Graphics graphics = Graphics.FromImage(bitmap);
// เริ่มต้นแบบอักษร
var font = new Font(FontFamily.GenericSerif, 40f, FontStyle.Bold);
// เริ่มต้นแปรง
var brush = new SolidBrush(Color.Red);
// วาดสี่เหลี่ยมผืนผ้า
graphics.DrawString("Welcome to Bitmap!", font, brush, 10, 20);
// บันทึกไฟล์
bitmap.Save(@"C:\Files\Drawings\output.png", ImageFormat.Png);
เติม Bitmap ด้วย Solid Color ใน C#
เราสามารถเติมบิตแมปด้วยสีทึบโดยใช้สี่เหลี่ยมที่เติมแล้วบันทึกเป็นบิตแมปใหม่โดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างบิตแมปใหม่โดยใช้คลาสบิตแมปที่มีขนาดที่ระบุ
- จากนั้น สร้างวัตถุกราฟิกใหม่จากวัตถุบิตแมปโดยใช้เมธอด FromImage()
- จากนั้น เริ่มต้นวัตถุคลาสสี่เหลี่ยมผืนผ้าด้วยตำแหน่งและขนาดที่ระบุ
- หลังจากนั้นเรียกเมธอด FillRectangle() ด้วยสีแปรงและสี่เหลี่ยมผืนผ้า
- สุดท้าย บันทึกภาพผลลัพธ์โดยใช้เมธอด Save()
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการเติมบิตแมปด้วยสีทึบโดยใช้สี่เหลี่ยมผืนผ้าใน C#
// ตัวอย่างโค้ดนี้สาธิตวิธีสร้างบิตแมปใหม่โดยเติมสี่เหลี่ยมใน C#
// เริ่มต้น Bitmap ด้วยขนาดที่ระบุ
Bitmap bitmap = new Bitmap(500, 500);
// สร้างกราฟิกใหม่
Graphics graph = Graphics.FromImage(bitmap);
// กำหนดสี่เหลี่ยมผืนผ้า
Rectangle ImageSize = new Rectangle(0, 0, 500, 500);
// วาดสี่เหลี่ยมที่เติม
graph.FillRectangle(Brushes.Gray, ImageSize);
// บันทึกไฟล์
bitmap.Save(@"C:\Files\Drawings\output.png");
โหลดรูปภาพใน Bitmap โดยใช้ C#
เรายังสามารถโหลดรูปภาพที่มีอยู่ในบิตแมปและบันทึกเป็นบิตแมปใหม่โดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก โหลดรูปภาพโดยใช้คลาสบิตแมป
- จากนั้น สร้างบิตแมปใหม่โดยใช้คลาสบิตแมปที่มีขนาดที่ระบุ
- จากนั้น สร้างวัตถุกราฟิกใหม่จากวัตถุบิตแมปที่สร้างขึ้นใหม่โดยใช้เมธอด FromImage()
- หลังจากนั้นให้เรียกใช้เมธอด DrawImage() โดยมีอาร์กิวเมนต์พิกัดรูปภาพและตำแหน่ง
- สุดท้าย บันทึกภาพผลลัพธ์โดยใช้เมธอด Save()
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีโหลดรูปภาพในบิตแมปโดยใช้ C#
// ตัวอย่างโค้ดนี้สาธิตวิธีการโหลดรูปภาพลงในบิตแมปและบันทึกเป็นบิตแมปใหม่
// โหลดภาพ:
Bitmap image = new Bitmap(@"C:\Files\Drawings\sample.jpg");
// เริ่มต้น Bitmap ด้วยขนาดที่ระบุ
Bitmap bitmap = new Bitmap(1000, 1000);
// สร้างกราฟิกใหม่
Graphics graphics = Graphics.FromImage(bitmap);
// วาดภาพตามตำแหน่งที่กำหนด
graphics.DrawImage(image, 10, 10);
// บันทึกไฟล์
bitmap.Save(@"C:\Files\Drawings\output.png");
วิธีปรับขนาดรูปภาพโดยใช้ Bitmap ใน C#
เราสามารถโหลดและปรับขนาดรูปภาพที่มีอยู่ในบิตแมปและบันทึกเป็นบิตแมปใหม่โดยทำตามขั้นตอนด้านล่าง:
- โหลดรูปภาพที่มีอยู่โดยใช้คลาส Bitmap
- สร้างบิตแมปใหม่โดยใช้คลาส Bitmap พร้อมภาพที่โหลดและขนาดที่ระบุ
- สุดท้าย บันทึกภาพผลลัพธ์โดยใช้เมธอด Save()
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีปรับขนาดรูปภาพที่มีอยู่และบันทึกเป็นบิตแมปใหม่ใน C#
// ตัวอย่างโค้ดนี้สาธิตวิธีสร้างการปรับขนาดรูปภาพที่มีอยู่และสร้างบิตแมปใหม่ใน C#
// โหลดภาพ:
Bitmap image = new Bitmap(@"C:\Files\Drawings\sample.jpg");
// สร้างบิตแมปใหม่ที่มีขนาดครึ่งหนึ่งของภาพที่โหลด:
Bitmap bitmap = new Bitmap(image, (int)(image.Width * 0.5), (int)(image.Height * 0.5));
// บันทึกไฟล์
bitmap.Save(@"C:\Files\Drawings\output.jpg");
รับใบอนุญาตชั่วคราวฟรี
คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี เพื่อลองใช้ Aspose.Drawing สำหรับ .NET โดยไม่มีข้อจำกัดในการประเมิน
บทสรุป
ในบทความนี้ เราได้เรียนรู้วิธีการ:
- สร้างบิตแมปใหม่
- วาดสี่เหลี่ยมผืนผ้า วงรี ฯลฯ บนบิตแมป
- โหลดภาพที่มีอยู่
- ปรับขนาดภาพที่มีอยู่และสร้างบิตแมปใหม่ด้วยขนาดใหม่
- บันทึกภาพบิตแมปจาก MemoryStream หรืออาร์เรย์ไบต์ลงในไฟล์
- กำหนดความกว้างและความสูงของบิตแมปใน C#
นอกจากการสร้างบิตแมปใหม่ใน C# แล้ว คุณยังสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Aspose.Drawing สำหรับ .NET โดยใช้ เอกสาร และสำรวจคุณสมบัติต่างๆ ที่ API รองรับ ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี