0
The documentation for this gives a couple of examples但我无法找到任何可以通过变换中的每个设置执行的操作。Drawing2D.Matrix是否有很好的解释?
我试图想出一个转换,将做一个垂直翻转的绘制。
谢谢 - 戴夫
The documentation for this gives a couple of examples但我无法找到任何可以通过变换中的每个设置执行的操作。Drawing2D.Matrix是否有很好的解释?
我试图想出一个转换,将做一个垂直翻转的绘制。
谢谢 - 戴夫
变换存储在一个3x3矩阵,很难直观地告诉了每个矩阵确实组件。这就是为什么你给了一组函数来处理,你可以链接在一起。例如,如果你想以90度顺时针旋转图像,然后使它的两倍,可以使用
Matrix myMatrix = new Matrix();
myMatrix.Rotate(90);
myMatrix.Scale(2, 2, MatrixOrder.Append);
的MatrixOrder.Append
表明比例必须与先前的转换后进行(顺序在这里很重要)。
要使用的主要功能是:
RotateAt(Single a, Point o)
点周围Scale(Single a, Single b)
图像进行顺时针旋转,在X缩放图像和Y轴 - 基本上,(X,Y)成为( ax,by)Translate(Single a, Single b)
在X轴和Y轴上转换图像 - 基本上,(x,y)变成(a + x,b + y)。要垂直翻转图像,您只需要一个Scale(-1, 1)
。每个点(x,y)将被转换为(-x,y)。如果需要将图像翻转到与y = 0轴不同的垂直轴上,则需要将其与Translate
结合使用。
请注意,从数学上讲,任何仿射变换都可以分解为平移,旋转和缩放矩阵的乘积。如果您不想进行计算,那么您正在使用的API还提供了一些更方便的功能,例如Shear
。
Here是一个更详细的解释。它最后包含一些代码。