.net GDI+;
我在windows窗体应用程序的图形上下文中绘制了许多图形对象。与ui元素进行了一些交互,其中呈现了路径,允许用户平移、缩放并设置缩放点的原点。我的问题是,是否可以在图形对象上设置一系列变换操作,如下所示 [1] 应用平移变换(将路径移动到缩放变换的原点) [2] 应用比例变换 [3] 应用平移变换(将路径移回正确位置) 似乎我只能对单个变换操作类型(平移、缩放等)进行排序,因此两个平移变换不会应用于正确的点(缩放操作的任一侧)。有办法做到这一点吗?或者,是否可以为缩放变换设置原点 我确实弄乱了嵌套的GraphicsContainer,但它们似乎没有帮助 谢谢.net GDI+;,.net,graphics,gdi+,transform,onpaint,.net,Graphics,Gdi+,Transform,Onpaint,我在windows窗体应用程序的图形上下文中绘制了许多图形对象。与ui元素进行了一些交互,其中呈现了路径,允许用户平移、缩放并设置缩放点的原点。我的问题是,是否可以在图形对象上设置一系列变换操作,如下所示 [1] 应用平移变换(将路径移动到缩放变换的原点) [2] 应用比例变换 [3] 应用平移变换(将路径移回正确位置) 似乎我只能对单个变换操作类型(平移、缩放等)进行排序,因此两个平移变换不会应用于正确的点(缩放操作的任一侧)。有办法做到这一点吗?或者,是否可以为缩放变换设置原点 我确实弄乱了
最大值是。你可以。使用矩阵对象
是的。你可以。使用矩阵对象 代码: 您可以使用矩阵变换GraphicPath或图形对象。 代码: 可以使用矩阵变换GraphicPath或图形对象
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Bitmap bmp = new Bitmap(300, 300);
Graphics g = Graphics.FromImage(bmp);
System.Drawing.Drawing2D.Matrix matrix = new System.Drawing.Drawing2D.Matrix();
g.DrawString("this is a string", SystemFonts.DefaultFont,
Brushes.Black, new Point(50, 50));
matrix.Rotate(30); // or use RotateAt(...) specifying your rotation point
g.Transform = matrix;
g.DrawString("this is a 30 rotated string", SystemFonts.DefaultFont,
Brushes.Black, new Point(50, 50));
matrix.Reset();
matrix.Translate(50, 50);
g.Transform = matrix;
g.DrawString("this is a 50; 50 translated string", SystemFonts.DefaultFont,
Brushes.Black, new Point(50, 50));
pictureBox1.Image = bmp;
}