坐标系在处理图形和形状时很重要。坐标轴可以旋转以获得通过同一原点的新轴。让我们使用 C# 语言探索以下转换,包括矩阵、全局、局部和世界转换。此外,让我们通过这篇文章学习以下转换:
矩阵、全局、局部和世界转换 - C# API 安装
Aspose.Drawing for .NET API 支持处理不同的绘图对象。您可以在基于 .NET 的应用程序中轻松创建、编辑、转换或渲染图形。只需从 New Releases 部分下载 DLL 文件。另一方面,您可以使用以下安装命令从 NuGet 配置它:
PM> Install-Package Aspose.Drawing
使用 C# 以编程方式应用矩阵变换
Matrix 类有一个 3 x 3 的仿射矩阵,表示变换。您可以根据需要使用它来旋转、平移或缩放形状。以下步骤说明了如何应用矩阵变换:
- 实例化 Bitmap 类对象
- 创建形状
- 应用矩阵变换
下面的代码显示了如何使用 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# 以编程方式应用全局坐标变换
全局变换用于变换图形中的所有图形对象。您可以按照以下步骤应用全局坐标变换:
- 初始化 Bitmap 类的实例
- 声明 Graphics 类对象
- 设置旋转
- 使用全局变换绘制形状
以下代码使用 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# 中以编程方式设置本地转换
局部变换与图形中的特定形状或图形有关。这可以用图形路径的变换来解释,其中只有该路径的项目被变换。您可以通过以下步骤设置本地转换:
- 初始化 Bitmap 类的对象
- 声明 Graphics 和 GraphicsPath 类对象
- 创建形状并定义矩阵
- 调用变换方法
下面的代码片段解释了如何使用 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);
// 使用世界变换保存输出图像
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\WorldTransformation_out.png");
结论
简而言之,您已经了解了与计算机图形和形状相关的不同转换。您必须能够了解使用 C# 语言进行全局、局部和世界转换的详细信息。此外,您可以阅读 API 文档 了解更多详情,或通过 免费支持论坛 与我们联系。我们愿意帮助你!