C# 矩阵翻译是如何工作的?

C# 矩阵翻译是如何工作的?,c#,vector,matrix,point,C#,Vector,Matrix,Point,我正在玩System.Drawing.Drawing2D.Matrix,很难想出如何通过指定的向量移动点。 例如,我想使用矩阵通过向量(2,2)移动一个点(1,1),这样在变换后该点将具有坐标(3,3)。但是,下面的代码似乎不起作用,该点仍然有原点坐标(我可能在这里遗漏了一些基本信息): 有人能解释一下正确的转换是什么样子的吗?这是因为您正在将一个新对象传递给TransformPoints,它最终会丢失 尝试将代码更改为 var point = new PointF(1F, 1F); var m

我正在玩
System.Drawing.Drawing2D.Matrix
,很难想出如何通过指定的向量移动点。 例如,我想使用
矩阵
通过向量
(2,2)
移动一个点
(1,1)
,这样在变换后该点将具有坐标
(3,3)
。但是,下面的代码似乎不起作用,该点仍然有原点坐标(我可能在这里遗漏了一些基本信息):


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

这是因为您正在将一个新对象传递给
TransformPoints
,它最终会丢失

尝试将代码更改为

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

point = aPoints[0];

请注意最后一行中的更改。

谢谢,但此代码无法编译。我正在传递一个隐式类型的数组,它相当于
new PointF[]{point}
哦,反射器确实告诉我们数组确实丢失了,转换的结果存储在其中。您的回答确实很有帮助,非常感谢。@miensol,很抱歉弄错了,虽然方向是正确的,但请参阅编辑以获取固定代码
var point = new PointF(1F, 1F);
var matrix = new Matrix();
matrix.Translate(2F,2F);         
PointF[] aPoints = { point };   
matrix.TransformPoints(aPoints);

point = aPoints[0];