我正在玩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});
有人能解释一下正确的转换是怎样的吗?
答案 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];
注意最后一行的变化。