0

我正在玩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});

谁能解释正确的转换是什么样的?

4

1 回答 1

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];

注意最后一行的变化。

于 2012-04-30T15:52:00.993 回答