次の方法で共有


Matrix.TransformVectors メソッド (Point )

Matrix オブジェクトのスケールおよび回転の成分だけを、指定した点の配列に適用します。

Overloads Public Sub TransformVectors( _
   ByVal pts() As Point _)
[C#]
public void TransformVectors(Point[] pts);
[C++]
public: void TransformVectors(Pointpts[]);
[JScript]
public function TransformVectors(
   pts : Point[]);

パラメータ

  • pts
    変換する複数の点を表す Point 構造体の配列。

使用例

[Visual Basic, C#] 次の例は、Windows フォームでの使用を意図してデザインされており、 OnPaint イベントのオブジェクトである PaintEventArgs e が必要です。このコードは次のアクションを実行します。

  • 四角形を形成する点の配列を作成します。
  • スケーリングの変換を適用する前に、画面にこの点の配列を描画します (青い四角形)。
  • 行列を作成し、それを x 軸方向に 3 倍、y 軸方向に 2 倍だけスケールして、両方の軸に対して 100 だけ平行移動します。
  • 行列の要素を画面に一覧表示します。
  • この行列変換を点の配列に適用します。
  • 変形した配列を画面に描画します (赤い四角形)。

[Visual Basic, C#] 赤い四角形は、四角形の左上隅 (四角形の開始点) を含めて x 軸方向に 3 倍、y 軸方向に 2 倍スケールされますが、平行移動ベクタ (行列の最後の 2 つの要素) は無視されます。

 
Public Sub TransformVectorsExample(e As PaintEventArgs)
Dim myPen As New Pen(Color.Blue, 1)
Dim myPen2 As New Pen(Color.Red, 1)
' Create an array of points.
Dim myArray As Point() =  {New Point(20, 20), New Point(120, 20), _
New Point(120, 120), New Point(20, 120), New Point(20, 20)}
' Draw the Points to the screen before applying the
' transform.
e.Graphics.DrawLines(myPen, myArray)
' Create a matrix and scale it.
Dim myMatrix As New Matrix()
myMatrix.Scale(3, 2, MatrixOrder.Append)
myMatrix.Translate(100, 100, MatrixOrder.Append)
ListMatrixElementsHelper(e, myMatrix, _
"Scaled and Translated Matrix", 6, 20)
myMatrix.TransformVectors(myArray)
' Draw the Points to the screen again after applying the
' transform.
e.Graphics.DrawLines(myPen2, myArray)
End Sub
' A helper function to list the contents of a matrix.
Public Sub ListMatrixElementsHelper(e As PaintEventArgs, _
matrix As Matrix, matrixName As String, numElements As Integer, _
y As Integer)
' Set up variables for drawing the array
' of points to the screen.
Dim i As Integer
Dim x As Single = 20
Dim j As Single = 200
Dim myFont As New Font("Arial", 8)
Dim myBrush As New SolidBrush(Color.Black)
' Draw the matrix name to the screen.
e.Graphics.DrawString(matrixName + ":  ", myFont, myBrush, x, y)
' Draw the set of path points and types to the screen.
For i = 0 To numElements - 1
e.Graphics.DrawString(matrix.Elements(i).ToString() + ", ", _
myFont, myBrush, j, y)
j += 30
Next i
End Sub
        
[C#] 
public void TransformVectorsExample(PaintEventArgs e)
{
Pen myPen = new Pen(Color.Blue, 1);
Pen myPen2 = new Pen(Color.Red, 1);
// Create an array of points.
Point[] myArray =
{
new Point(20, 20),
new Point(120, 20),
new Point(120, 120),
new Point(20, 120),
new Point(20,20)
};
// Draw the Points to the screen before applying the
// transform.
e.Graphics.DrawLines(myPen, myArray);
// Create a matrix, scale it, and translate it.
Matrix myMatrix = new Matrix();
myMatrix.Scale(3, 2, MatrixOrder.Append);
myMatrix.Translate(100, 100, MatrixOrder.Append);
// List the matrix elements to the screen.
ListMatrixElements(e,
myMatrix,
"Scaled and Translated Matrix",
6,
20);
// Apply the transform to the array.
myMatrix.TransformVectors(myArray);
// Draw the Points to the screen again after applying the
// transform.
e.Graphics.DrawLines(myPen2, myArray);
}
//-------------------------------------------------------
// This function is a helper function to
// list the contents of a matrix.
//-------------------------------------------------------
public void ListMatrixElements(
PaintEventArgs e,
Matrix matrix,
string matrixName,
int numElements,
int y)
{
// Set up variables for drawing the array
// of points to the screen.
int i;
float x = 20, X = 200;
Font myFont = new Font("Arial", 8);
SolidBrush myBrush = new SolidBrush(Color.Black);
// Draw the matrix name to the screen.
e.Graphics.DrawString(
matrixName + ":  ",
myFont,
myBrush,
x,
y);
// Draw the set of path points and types to the screen.
for(i=0; i<numElements; i++)
{
e.Graphics.DrawString(
matrix.Elements[i].ToString() + ", ",
myFont,
myBrush,
X,
y);
X += 30;
}
}
        

[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

Matrix クラス | Matrix メンバ | System.Drawing.Drawing2D 名前空間 | Matrix.TransformVectors オーバーロードの一覧