matrix-global-local-world-transformation

ระบบพิกัดมีความสำคัญในขณะที่ทำงานกับกราฟิกและรูปร่าง แกนพิกัดสามารถหมุนได้เพื่อรับแกนใหม่ผ่านจุดกำเนิดเดียวกัน ให้เราสำรวจการแปลงต่อไปนี้รวมถึงการแปลง Matrix, Global, Local และ World โดยใช้ภาษา C# นอกจากนี้ ให้เราเรียนรู้การแปลงต่อไปนี้ผ่านบทความนี้:

การแปลงเมทริกซ์ ระดับโลก ท้องถิ่น และโลก – การติดตั้ง C# API

Aspose.Drawing for .NET API รองรับการประมวลผลอ็อบเจกต์การวาดต่างๆ คุณสามารถสร้าง แก้ไข แปลง หรือเรนเดอร์กราฟิกในแอปพลิเคชันที่ใช้ .NET ของคุณได้อย่างง่ายดาย เพียงดาวน์โหลดไฟล์ DLL จากส่วน New Releases ในทางกลับกัน คุณสามารถกำหนดค่าได้จาก NuGet ด้วยคำสั่งการติดตั้งต่อไปนี้:

PM> Install-Package Aspose.Drawing

ใช้การแปลงเมทริกซ์โดยทางโปรแกรมโดยใช้ C#

คลาสเมทริกซ์มีเมทริกซ์สัมพันธ์ 3 คูณ 3 ซึ่งแสดงถึงการเปลี่ยนแปลง คุณสามารถใช้เพื่อหมุน แปล หรือปรับขนาดรูปร่างตามความต้องการของคุณ ขั้นตอนต่อไปนี้อธิบายวิธีใช้การแปลงเมทริกซ์:

  1. สร้างอินสแตนซ์ Bitmap class object
  2. สร้างรูปร่าง
  3. ใช้การแปลงเมทริกซ์

รหัสด้านล่างแสดงวิธีการใช้การแปลงเมทริกซ์โดยทางโปรแกรมโดยใช้ภาษา 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#

การแปลงโดยรวมใช้เพื่อแปลงวัตถุกราฟิกทั้งหมดในรูปวาด คุณสามารถทำตามขั้นตอนด้านล่างเพื่อใช้การแปลงพิกัดส่วนกลาง:

  1. เริ่มต้นอินสแตนซ์ของคลาส Bitmap
  2. ประกาศวัตถุคลาส Graphics
  3. ตั้งค่าการหมุน
  4. วาดรูปร่างด้วย 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#

การแปลงเฉพาะที่เกี่ยวข้องกับรูปร่างหรือกราฟิกเฉพาะในรูปวาด สามารถอธิบายได้ด้วยการแปลงเส้นทางกราฟิกซึ่งเฉพาะรายการของเส้นทางนั้นเท่านั้นที่จะถูกแปลง คุณสามารถตั้งค่าการแปลงเฉพาะที่ด้วยขั้นตอนต่อไปนี้:

  1. เริ่มต้นวัตถุของคลาส Bitmap
  2. ประกาศวัตถุคลาสกราฟิกและ GraphicsPath
  3. สร้างรูปร่างและกำหนด Matrix
  4. วิธีการแปลงการโทร

ข้อมูลโค้ดด้านล่างอธิบายวิธีตั้งค่าการแปลงเฉพาะที่โดยทางโปรแกรมโดยใช้ 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# โดยมีขั้นตอนด้านล่าง:

  1. เริ่มต้นวัตถุของคลาส Bitmap
  2. เรียกใช้เมธอด TranslateTransform
  3. วาดรูปร่าง

รหัสต่อไปนี้แสดงวิธีการใช้การแปลงโลกโดยทางโปรแกรมโดยใช้ภาษา 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 สำหรับรายละเอียดเพิ่มเติมหรือติดต่อเราผ่านทาง ฟอรัมการสนับสนุนฟรี เรายินดีที่จะช่วยเหลือคุณ!

ดูสิ่งนี้ด้วย