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

Matrix::TransformVectors方法會將陣列中的每個向量乘以這個矩陣。 這個矩陣的轉換項目 (第三列) 會被忽略。 每個向量都會被視為資料列矩陣。 乘法是使用左邊的資料列矩陣和右邊的這個矩陣來執行。

語法

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

參數

[in, out] pts

類型: *

Point物件的陣列指標,在輸入時包含要轉換的向量,而且在輸出時接收轉換的向量。 陣列中的每個向量都會轉換 (乘以此矩陣) ,並以轉換的結果更新。

[in] count

類型: INT

選擇性。 整數,指定要轉換的向量數目。 預設值是 1。

傳回值

類型: 狀態

如果方法成功,它會傳回 Ok,這是 Status 列舉的元素。

如果方法失敗,它會傳回 Status 列舉的其他其中一個專案。

備註

雖然點代表位置,但向量代表實體 (例如,方向和大小的速度或加速) 。 因此,線段的端點是點,但其差異是向量,也就是該線段的長度和方向。

向量在許多方面類似于點。 就像點一樣,它們是以 x 和 Y 座標來表示,因此 GDI+ 會使用相同的類別 (PointPointF) 來表示向量,因為它用來代表點。 向量和點之間的細微差異是它們受到轉換影響的方式。 在實體世界中,移動座標系統的原點會變更所有位置點的座標,但不會改變任何速度向量。 向量可以縮放、旋轉、切割或翻轉,但無法轉譯 (移動) 。 因此,當 affine 轉換套用至向量時,會忽略矩陣的最後一個資料列) (轉譯元件。

範例

下列範例會建立向量和點。 向量和點的提示位於相同的位置: (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)
程式庫 Gdiplus.lib
Dll Gdiplus.dll

另請參閱

全域和區域轉換

矩陣

以矩陣來表示轉換

TransformPoints 方法

TransformVectors 方法

轉換