代码之家  ›  专栏  ›  技术社区  ›  Ben Lesh

system.drawing.matrix,我了解它的功能,但它是如何工作的?

  •  1
  • Ben Lesh  · 技术社区  · 15 年前

    我已经用了很多次矩阵类。我对矩阵数学有了初步的了解,这门课上了好几年了。但我不完全理解这个类在遮光罩下操作graphicsPath中的点所做的工作。

    具体来说,它在那里做什么,因为它与图形路径特别相关?或者另一种方式来看待它,如果矩阵类不存在,我必须创建自己的,它会是什么样子的,它会做什么?(我不是在创造自己的,我只是想了解它)

    此外,有人知道矩阵类中使用的矩阵的维数吗?

    编辑:我已经把范围缩小到下面的CallinReflector。从那里,我得到了泡泡吻。

    [DllImport("gdiplus.dll", CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
    internal static extern int GdipTransformPath(HandleRef path, HandleRef matrix);
    
    3 回复  |  直到 15 年前
        1
  •  1
  •   Scott P    15 年前

    在这种情况下,矩阵类是一个二维变换矩阵。矩阵用于缩放、旋转和/或平移图形路径。数学相对来说是直截了当的。你可以在这里看到: http://en.wikipedia.org/wiki/Transformation_matrix

        2
  •  1
  •   tjoho    15 年前

    如果要创建自己的矩阵类,来回转换为System.Drawing.Matrix类,需要注意的一点是.NET在转换点时不使用最常用的标准。

    .NET矩阵似乎是在转换发生之前被转置的。

    请阅读以下背景: http://www.codeproject.com/KB/recipes/psdotnetmatrix.aspx

        3
  •  0
  •   ConsultUtah    15 年前

    图形路径基本上是点和标志的集合,用来解释点之间的关系。矩阵类只将矩阵应用于这些点。

    你可以实现同样的事情: 1。创建新的空图形路径 2。使用graphicsPathIterator,迭代路径(和子路径) 三。抓住每一点并应用矩阵 4。将该点添加到新的graphicsPath

    但不要这样做。graphicsPath中的类型没有很好的文档记录。