我已经使用了Matrix类一千次。我对矩阵数学有一个基本的把握,自从我上过这门课以来已经有好几年了。但我并不完全理解这个类在幕后操作GraphicsPath中的点是做什么的。
具体来说,它在那里做什么,因为它特别涉及到GraphicsPaths?或者另一种看待它的方式,如果Matrix类不存在,我必须创建自己的,它会是什么样子,它会做什么? (我不是在创造我自己,我只想了解它)
此外,有没有人知道Matrix类中使用的矩阵的尺寸?
编辑:我已将其缩小到反射器中的以下调用。从那里开始,我有了亲吻。[DllImport("gdiplus.dll", CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
internal static extern int GdipTransformPath(HandleRef path, HandleRef matrix);
答案 0 :(得分:1)
在这种情况下,Matrix类是2D变换矩阵。 Matrix用于缩放,旋转和/或平移图形路径。数学相对简单。你可以在这看一下: http://en.wikipedia.org/wiki/Transformation_matrix
答案 1 :(得分:1)
如果要创建自己的矩阵类,并且要在System.Drawing.Matrix类中来回转换,则需要注意的一点是,.NET转换点时不会使用最常用的标准。 / p>
.NET Matrix似乎在转换发生之前进行了转换。
另请阅读此处的背景资料:http://www.codeproject.com/KB/recipes/psdotnetmatrix.aspx
答案 2 :(得分:0)
GraphicsPath基本上是一组点和一个标志,用于解释这些点之间的关系。矩阵类只是将矩阵应用于这些点。
你可以实现同样的事情: 1.创建一个新的空GraphicsPath 2.使用GraphicsPathIterator迭代路径(和子路径) 3.取每个点并应用矩阵 4.将该点添加到新的GraphicsPath
但不要这样做。 GraphicsPath中的类型没有很好地记录。