在新对象上实现矩阵变换
本文关键字:实现 变换 新对象 对象 | 更新日期: 2023-09-27 17:53:14
我需要能够在。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"方法的最佳方法是什么?我做了相当多的搜索,但找不到任何参考资料,以最好的方式做到这一点。
谢谢!
自己实现转换并不难,看一下:
http://en.wikipedia.org/wiki/Transformation_matrix你的对象是位图还是什么?那么这可能是一些方法:
http://en.csharp-online.net/GDIplus_Graphics_Transformation%E2%80%94Image_Transformation或者你可以离开你的对象,把转换推到一个堆栈,当你把它变成图形时使用它。
嘿-看起来矩阵类可以为你做很多事情:
http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.matrix.aspx 例如TransformPoints(Point[]) or TransformVectors(Point[])