次の方法で共有


Matrix.TransformVectors メソッド

定義

配列内の各ベクトルに行列を乗算します。 この行列の翻訳要素 (3 行目) は無視されます。

オーバーロード

TransformVectors(Point[])

この Matrix のスケールおよび回転コンポーネントのみを、指定されたポイントの配列に適用します。

TransformVectors(PointF[])

配列内の各ベクトルに行列を乗算します。 この行列の翻訳要素 (3 行目) は無視されます。

TransformVectors(ReadOnlySpan<Point>)
TransformVectors(ReadOnlySpan<PointF>)

TransformVectors(Point[])

ソース:
Matrix.cs
ソース:
Matrix.cs
ソース:
Matrix.cs
ソース:
Matrix.cs
ソース:
Matrix.cs

この Matrix のスケールおよび回転コンポーネントのみを、指定されたポイントの配列に適用します。

public:
 void TransformVectors(cli::array <System::Drawing::Point> ^ pts);
public:
 void TransformVectors(... cli::array <System::Drawing::Point> ^ pts);
public void TransformVectors (System.Drawing.Point[] pts);
public void TransformVectors (params System.Drawing.Point[] pts);
member this.TransformVectors : System.Drawing.Point[] -> unit
Public Sub TransformVectors (pts As Point())
Public Sub TransformVectors (ParamArray pts As Point())

パラメーター

pts
Point[]

変換するポイントを表す Point 構造体の配列。

次のコード例は、Windows フォームで使用できるように設計されており、Paint イベント オブジェクトである PaintEventArgseが必要です。 このコードは、次のアクションを実行します。

  • 四角形を形成するポイントの配列を作成します。

  • スケーリング変換 (青い四角形) を適用する前に、画面にポイントのこの配列を描画します。

  • 行列を作成し、x 軸に 3、y 軸に 2 ずつ拡大縮小し、両方の軸で 100 ずつ平行移動します。

  • マトリックス要素を画面に一覧表示します。

  • この行列変換をポイントの配列に適用します。

  • 変換された配列を画面 (赤い四角形) に描画します。

赤い四角形は、x 軸では 3、y 軸では 2 の係数でスケーリングされていますが、四角形の左上隅 (四角形の始点) を含みますが、平行移動ベクトル (マトリックスの最後の 2 つの要素) は無視されます。

public:
   void TransformVectorsExample( PaintEventArgs^ e )
   {
      Pen^ myPen = gcnew Pen( Color::Blue,1.0f );
      Pen^ myPen2 = gcnew Pen( Color::Red,1.0f );

      // Create an array of points.
      array<Point>^ myArray = {Point(20,20),Point(120,20),Point(120,120),Point(20,120),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 = gcnew 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.
   //-------------------------------------------------------
   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;
      System::Drawing::Font^ myFont = gcnew System::Drawing::Font( "Arial",8 );
      SolidBrush^ myBrush = gcnew SolidBrush( Color::Black );

      // Draw the matrix name to the screen.
      e->Graphics->DrawString( String::Concat( matrixName, ":  " ), myFont, myBrush, (float)x, (float)y );

      // Draw the set of path points and types to the screen.
      for ( i = 0; i < numElements; i++ )
      {
         e->Graphics->DrawString( String::Concat( matrix->Elements[ i ], ", " ), myFont, myBrush, (float)X, (float)y );
         X += 30;
      }
   }
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;
    }
}
Public Sub TransformVectorsExample(ByVal 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(ByVal e As PaintEventArgs, _
ByVal matrix As Matrix, ByVal matrixName As String, ByVal numElements As Integer, _
ByVal 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

適用対象

TransformVectors(PointF[])

ソース:
Matrix.cs
ソース:
Matrix.cs
ソース:
Matrix.cs
ソース:
Matrix.cs
ソース:
Matrix.cs

配列内の各ベクトルに行列を乗算します。 この行列の翻訳要素 (3 行目) は無視されます。

public:
 void TransformVectors(cli::array <System::Drawing::PointF> ^ pts);
public:
 void TransformVectors(... cli::array <System::Drawing::PointF> ^ pts);
public void TransformVectors (System.Drawing.PointF[] pts);
public void TransformVectors (params System.Drawing.PointF[] pts);
member this.TransformVectors : System.Drawing.PointF[] -> unit
Public Sub TransformVectors (pts As PointF())
Public Sub TransformVectors (ParamArray pts As PointF())

パラメーター

pts
PointF[]

変換するポイントを表す Point 構造体の配列。

例については、TransformVectors(Point[])を参照してください。

適用対象

TransformVectors(ReadOnlySpan<Point>)

ソース:
Matrix.cs
public:
 void TransformVectors(ReadOnlySpan<System::Drawing::Point> pts);
public void TransformVectors (scoped ReadOnlySpan<System.Drawing.Point> pts);
member this.TransformVectors : ReadOnlySpan<System.Drawing.Point> -> unit
Public Sub TransformVectors (pts As ReadOnlySpan(Of Point))

パラメーター

適用対象

TransformVectors(ReadOnlySpan<PointF>)

ソース:
Matrix.cs
public:
 void TransformVectors(ReadOnlySpan<System::Drawing::PointF> pts);
public void TransformVectors (scoped ReadOnlySpan<System.Drawing.PointF> pts);
member this.TransformVectors : ReadOnlySpan<System.Drawing.PointF> -> unit
Public Sub TransformVectors (pts As ReadOnlySpan(Of PointF))

パラメーター

適用対象