矩阵全局局部世界变换

坐标系在处理图形和形状时很重要。坐标轴可以旋转以获得通过同一原点的新轴。让我们使用 C# 语言探索以下转换,包括矩阵、全局、局部和世界转换。此外,让我们通过这篇文章学习以下转换:

矩阵、全局、局部和世界转换 - C# API 安装

Aspose.Drawing for .NET API 支持处理不同的绘图对象。您可以在基于 .NET 的应用程序中轻松创建、编辑、转换或渲染图形。只需从 New Releases 部分下载 DLL 文件。另一方面,您可以使用以下安装命令从 NuGet 配置它:

PM> Install-Package Aspose.Drawing

使用 C# 以编程方式应用矩阵变换

Matrix 类有一个 3 x 3 的仿射矩阵,表示变换。您可以根据需要使用它来旋转、平移或缩放形状。以下步骤说明了如何应用矩阵变换:

  1. 实例化 Bitmap 类对象
  2. 创建形状
  3. 应用矩阵变换

下面的代码显示了如何使用 C# 语言以编程方式应用矩阵变换:

// 初始化位图类对象
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// 声明 Graphics 类对象
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// 启动 Rectangle 类对象
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);
}

使用 C# 以编程方式应用全局坐标变换

全局变换用于变换图形中的所有图形对象。您可以按照以下步骤应用全局坐标变换:

  1. 初始化 Bitmap 类的实例
  2. 声明 Graphics 类对象
  3. 设置旋转
  4. 使用全局变换绘制形状

以下代码使用 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");

在 C# 中以编程方式设置本地转换

局部变换与图形中的特定形状或图形有关。这可以用图形路径的变换来解释,其中只有该路径的项目被变换。您可以通过以下步骤设置本地转换:

  1. 初始化 Bitmap 类的对象
  2. 声明 Graphics 和 GraphicsPath 类对象
  3. 创建形状并定义矩阵
  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);

// 使用世界变换保存输出图像
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\WorldTransformation_out.png");

结论

简而言之,您已经了解了与计算机图形和形状相关的不同转换。您必须能够了解使用 C# 语言进行全局、局部和世界转换的详细信息。此外,您可以阅读 API 文档 了解更多详情,或通过 免费支持论坛 与我们联系。我们愿意帮助你!

也可以看看