Matrix::TransformVectors (Point*,INT) 方法 (gdiplusmatrix.h)

Matrix::TransformVectors 方法将数组中的每个向量乘以此矩阵。 该矩阵的转换元素(第三行)被忽略。 每个向量都被视为一个行矩阵。 乘法执行时,行矩阵在左侧,此矩阵在右侧。

语法

Status TransformVectors(
  [in, out] Point *pts,
  [in]      INT   count
);

parameters

[in, out] pts

类型: *

指向 Point 对象数组的指针,该数组在输入时包含要转换的矢量,并在输出时接收转换的矢量。 数组中的每个向量都经过转换 (乘以此矩阵) ,并使用转换结果进行更新。

[in] count

类型: INT

可选。 指定要转换的向量数的整数。 默认值为 1。

返回值

类型: 状态

如果该方法成功,则返回 Ok,这是 Status 枚举的元素。

如果方法失败,它将返回 Status 枚举的其他元素之一。

注解

当点表示位置时,向量表示实体 (例如,具有方向和数量级的速度或加速度) 。 因此,线段的端点是点,但它们的区别是向量,即该线段的长度和方向。

向量在很多方面都类似于点。 与点一样,它们由 x 坐标和 y 坐标表示,因此 GDI+ 使用 (与 Point 和 PointF) 相同的类来表示矢量,因为它使用 来表示点。 矢量和点之间的细微差别在于它们受到转换的影响。 在物理世界中,移动坐标系的原点会更改所有位置点的坐标,但它不会改变任何速度向量。 矢量可以缩放、旋转、剪切或翻转,但不能 (移动) 进行转换。 因此,当向量应用仿射变换时,将忽略矩阵) 的最后一行 (转换组件。

示例

以下示例创建一个向量和一个点。 矢量和点的尖端位于同一位置: (100、50) 。 该代码创建一个 Matrix 对象并初始化其元素,以便它表示顺时针旋转,然后向右平移 100 个单位。 代码调用矩阵的 Matrix::TransformPoints 方法来转换该点,并调用矩阵的 Matrix::TransformVectors 方法来转换向量。 整个转换 (旋转后,转换) 在点上执行,但只对向量执行转换的旋转部分。 Matrix::TransformVectors 方法将忽略表示转换的矩阵元素。

VOID Example_TransVectors(HDC hdc)
{
   Graphics graphics(hdc);

   Pen pen(Color(255, 0, 0, 255), 7);
   pen.SetEndCap(LineCapArrowAnchor);
   SolidBrush brush(Color(255, 0, 0, 255));

   // A point and a vector, same representation but different behavior
   Point point(100, 50);
   Point vector(100, 50);

   // Draw the original point and vector in blue.
   graphics.FillEllipse(&brush, point.X - 5, point.Y - 5, 10, 10);

   graphics.DrawLine(&pen, Point(0, 0), vector);

   // Transform.
   Matrix matrix(0.8f, 0.6f, -0.6f, 0.8f, 100.0f, 0.0f);
   matrix.TransformPoints(&point);
   matrix.TransformVectors(&vector);

   // Draw the transformed point and vector in red.
   pen.SetColor(Color(255, 255, 0, 0));
   brush.SetColor(Color(255, 255, 0, 0));
   graphics.FillEllipse(&brush, point.X - 5, point.Y - 5, 10, 10);
   graphics.DrawLine(&pen, Point(0, 0), vector); 
}

要求

   
最低受支持的客户端 Windows XP、Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 gdiplusmatrix.h (包括 Gdiplus.h)
Library Gdiplus.lib
DLL Gdiplus.dll

另请参阅

全局变换和局部变换

矩阵

转换的矩阵表示形式

Point

TransformPoints 方法

TransformVectors 方法

转换