在新对象上实现矩阵变换

时间:2011-04-24 18:34:43

标签: c# .net methods matrix graphicspath

我需要能够在.Net中转换我自己的一个对象以及一些GraphicsPath对象。我需要在GraphicsPath对象上执行的任何缩放,平移,旋转操作也发生在我自己的对象上。

例如,这里有一些缩放代码:

using (Matrix ScaleTransform = new Matrix(1, 0, 0, 1, 0, 0)) // scale matrix
{
    ScaleTransform.Scale(ScaleX, ScaleY);
    moPath.Transform(ScaleTransform);
    moBoundingBox.Transform(ScaleTransform);

    MyObject.Transform(ScaleTranform);
}


//In "MyObject":
public void Transform(Matrix m)
{
    //How is this implemented?  Is there a built-in .Net method?
}

问题是: 在MyObject中实现“Transform”方法的最佳方法是什么。我做了很多搜索,但找不到任何参考资料来做到这一点。

谢谢!

1 个答案:

答案 0 :(得分:1)

自己实现变换并不是很难,请看一下:

http://en.wikipedia.org/wiki/Transformation_matrix

你的对象是位图还是什么?那么这可能是某种方式:

http://en.csharp-online.net/GDIplus_Graphics_Transformation%E2%80%94Image_Transformation

或者您可以保留对象并将转换推送到堆栈并在将其转换为图形时使用它。

嘿 - 看起来Matrix类可以为你做很多事情:

http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.matrix.aspx

例如

TransformPoints(Point[]) or TransformVectors(Point[])