ระบบพิกัดมีความสำคัญในขณะที่ทำงานกับกราฟิกและรูปร่าง แกนพิกัดสามารถหมุนได้เพื่อรับแกนใหม่ผ่านจุดกำเนิดเดียวกัน ให้เราสำรวจการแปลงต่อไปนี้รวมถึงการแปลง Matrix, Global, Local และ World โดยใช้ภาษา C# นอกจากนี้ ให้เราเรียนรู้การแปลงต่อไปนี้ผ่านบทความนี้:
- การแปลงเมทริกซ์ ระดับโลก ท้องถิ่น และโลก – การติดตั้ง C# API
- ใช้การแปลงเมทริกซ์โดยทางโปรแกรมโดยใช้ C#
- ใช้ Global Coordinate Transformation โดยทางโปรแกรมด้วย C#
- ตั้งค่า Local Transformation โดยทางโปรแกรมใน C#
- ใช้การแปลงโลกโดยทางโปรแกรมโดยใช้ C#
การแปลงเมทริกซ์ ระดับโลก ท้องถิ่น และโลก – การติดตั้ง C# API
Aspose.Drawing for .NET API รองรับการประมวลผลอ็อบเจกต์การวาดต่างๆ คุณสามารถสร้าง แก้ไข แปลง หรือเรนเดอร์กราฟิกในแอปพลิเคชันที่ใช้ .NET ของคุณได้อย่างง่ายดาย เพียงดาวน์โหลดไฟล์ DLL จากส่วน New Releases ในทางกลับกัน คุณสามารถกำหนดค่าได้จาก NuGet ด้วยคำสั่งการติดตั้งต่อไปนี้:
PM> Install-Package Aspose.Drawing
ใช้การแปลงเมทริกซ์โดยทางโปรแกรมโดยใช้ C#
คลาสเมทริกซ์มีเมทริกซ์สัมพันธ์ 3 คูณ 3 ซึ่งแสดงถึงการเปลี่ยนแปลง คุณสามารถใช้เพื่อหมุน แปล หรือปรับขนาดรูปร่างตามความต้องการของคุณ ขั้นตอนต่อไปนี้อธิบายวิธีใช้การแปลงเมทริกซ์:
- สร้างอินสแตนซ์ Bitmap class object
- สร้างรูปร่าง
- ใช้การแปลงเมทริกซ์
รหัสด้านล่างแสดงวิธีการใช้การแปลงเมทริกซ์โดยทางโปรแกรมโดยใช้ภาษา C#:
// เริ่มต้นวัตถุคลาสบิตแมป
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
// ประกาศวัตถุคลาสกราฟิก
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));
// เริ่มต้นวัตถุคลาสสี่เหลี่ยมผืนผ้า
Rectangle originalRentangle = new Rectangle(300, 300, 300, 200);
TransformPath(graphics, originalRentangle, (matrix) => matrix.Rotate(15.0f));
TransformPath(graphics, originalRentangle, (matrix) => matrix.Translate(-250, -250));
TransformPath(graphics, originalRentangle, (matrix) => matrix.Scale(0.3f, 0.3f));
// บันทึกภาพที่ส่งออกด้วยการแปลงเมทริกซ์
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\MatrixTransformations_out.png");
private static void TransformPath(Graphics graphics, Rectangle originalRentangle, Action<Matrix> transform)
{
GraphicsPath path = new GraphicsPath();
path.AddRectangle(originalRentangle);
Matrix matrix = new Matrix();
transform(matrix);
path.Transform(matrix);
Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawPath(pen, path);
}
ใช้ Global Coordinate Transformation โดยทางโปรแกรมด้วย C#
การแปลงโดยรวมใช้เพื่อแปลงวัตถุกราฟิกทั้งหมดในรูปวาด คุณสามารถทำตามขั้นตอนด้านล่างเพื่อใช้การแปลงพิกัดส่วนกลาง:
- เริ่มต้นอินสแตนซ์ของคลาส Bitmap
- ประกาศวัตถุคลาส Graphics
- ตั้งค่าการหมุน
- วาดรูปร่างด้วย Global Transformation
รหัสต่อไปนี้อธิบายการแปลงพิกัดส่วนกลางโดยทางโปรแกรมโดยใช้ C #:
// เริ่มต้นวัตถุคลาสบิตแมป
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));
// ตั้งค่าการแปลงที่ใช้กับทุกรายการที่วาด:
graphics.RotateTransform(15);
Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawEllipse(pen, 300, 300, 400, 200);
// บันทึกภาพที่ส่งออกด้วยการแปลง Glabal
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\GlobalTransformation_out.png");
ตั้งค่า Local Transformation โดยทางโปรแกรมใน C#
การแปลงเฉพาะที่เกี่ยวข้องกับรูปร่างหรือกราฟิกเฉพาะในรูปวาด สามารถอธิบายได้ด้วยการแปลงเส้นทางกราฟิกซึ่งเฉพาะรายการของเส้นทางนั้นเท่านั้นที่จะถูกแปลง คุณสามารถตั้งค่าการแปลงเฉพาะที่ด้วยขั้นตอนต่อไปนี้:
- เริ่มต้นวัตถุของคลาส Bitmap
- ประกาศวัตถุคลาสกราฟิกและ GraphicsPath
- สร้างรูปร่างและกำหนด Matrix
- วิธีการแปลงการโทร
ข้อมูลโค้ดด้านล่างอธิบายวิธีตั้งค่าการแปลงเฉพาะที่โดยทางโปรแกรมโดยใช้ C#:
// เริ่มต้นวัตถุคลาสบิตแมป
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));
GraphicsPath path = new GraphicsPath();
path.AddEllipse(300, 300, 400, 200);
// ตั้งค่าการแปลงที่ใช้กับเส้นทางเฉพาะที่จะวาด:
Matrix matrix = new Matrix();
matrix.RotateAt(45, new Point(500, 400));
path.Transform(matrix);
Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawPath(pen, path);
// บันทึกภาพเอาต์พุตด้วยการแปลงเฉพาะที่
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\LocalTransformation_out.png");
ใช้การแปลงโลกโดยทางโปรแกรมโดยใช้ C#
การแปลงพิกัดโลกเป็นพิกัดหน้าเรียกว่าการแปลงโลก พิกัดหน้าดังกล่าวจะใช้สำหรับการแสดงผลกราฟิกบนอุปกรณ์ต่างๆ ดังนั้นคุณสามารถใช้การแปลงโลกโดยใช้ C# โดยมีขั้นตอนด้านล่าง:
- เริ่มต้นวัตถุของคลาส Bitmap
- เรียกใช้เมธอด TranslateTransform
- วาดรูปร่าง
รหัสต่อไปนี้แสดงวิธีการใช้การแปลงโลกโดยทางโปรแกรมโดยใช้ภาษา C#:
// เริ่มต้นวัตถุคลาสบิตแมป
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));
// ตั้งค่าการแปลงที่แมปพิกัดโลกกับพิกัดหน้า:
graphics.TranslateTransform(500, 400);
Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawRectangle(pen, 0, 0, 300, 200);
// บันทึกภาพผลลัพธ์ด้วย World Transformation
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\WorldTransformation_out.png");
บทสรุป
โดยสรุป คุณได้เรียนรู้เกี่ยวกับการแปลงต่างๆ ที่เกี่ยวข้องกับคอมพิวเตอร์กราฟิกและรูปร่าง คุณต้องสามารถเข้าใจรายละเอียดของการเปลี่ยนแปลงระดับโลก ระดับท้องถิ่น และระดับโลกโดยใช้ภาษา C# นอกจากนี้ คุณสามารถอ่าน เอกสาร API สำหรับรายละเอียดเพิ่มเติมหรือติดต่อเราผ่านทาง ฟอรัมการสนับสนุนฟรี เรายินดีที่จะช่วยเหลือคุณ!