Matrix Translate如何运作?

时间:2012-04-30 15:37:30

标签: c# vector matrix point

我正在玩System.Drawing.Drawing2D.Matrix并且很难弄清楚如何通过指定的向量移动一个点。 例如,我想使用Matrix将点(1,1)移动一个向量(2,2),以便在转换后该点将具有坐标(3,3)。但是下面的代码似乎不起作用,这个点仍然有原点坐标(我可能在这里缺少一些基本的东西):

var point = new PointF(1F, 1F);
var matrix = new Matrix();
matrix.Translate(2F,2F);            
matrix.TransformPoints(new[]{point});

有人能解释一下正确的转换是怎样的吗?

1 个答案:

答案 0 :(得分:2)

那是因为你将一个新对象传递给TransformPoints,最终会丢失。

尝试将代码更改为

var point = new PointF(1F, 1F);
var matrix = new Matrix();
matrix.Translate(2F,2F);         
PointF[] aPoints = { point };   
matrix.TransformPoints(aPoints);

point = aPoints[0];

注意最后一行的变化。