Matrix.TransformVectors Methode

Definition

Multipliziert jeden Vektor in einem Array mit der Matrix. Die zu verschiebenden Elemente dieser Matrix (dritte Zeile) werden ignoriert.

Überlädt

TransformVectors(Point[])

Weist dem angegebenen Punktearray ausschließlich die Skalierungs- und Drehungskomponenten dieser Matrix zu.

TransformVectors(PointF[])

Multipliziert jeden Vektor in einem Array mit der Matrix. Die zu verschiebenden Elemente dieser Matrix (dritte Zeile) werden ignoriert.

TransformVectors(Point[])

Weist dem angegebenen Punktearray ausschließlich die Skalierungs- und Drehungskomponenten dieser Matrix zu.

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

Parameter

pts
Point[]

Ein Array von Point-Strukturen, das die zu transformierenden Punkte darstellt.

Beispiele

Das folgende Codebeispiel ist für die Verwendung mit Windows Forms konzipiert und erfordert PaintEventArgs eein Paint Ereignisobjekt. Der Code führt die folgenden Aktionen aus:

  • Erstellt ein Array von Punkten, die ein Rechteck bilden.

  • Zeichnet dieses Array von Punkten auf den Bildschirm, bevor sie eine Skalierungstransformation (das blaue Rechteck) anwenden.

  • Erstellt eine Matrix und skaliert sie um 3 in der x-Achse und 2 in der y-Achse und übersetzt sie um 100 in beiden Achsen.

  • Listet die Matrixelemente auf dem Bildschirm auf.

  • Wendet diese Matrixtransformation auf das Array von Punkten an.

  • Zeichnet das transformierte Array auf den Bildschirm (das rote Rechteck).

Beachten Sie, dass das rote Rechteck durch einen Faktor von 3 in der x-Achse und um 2 in der y-Achse skaliert wurde, einschließlich der oberen linken Ecke des Rechtecks (der Anfangspunkt des Rechtecks), aber der Übersetzungsvektor (die letzten beiden Elemente der Matrix) wird ignoriert.

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

Gilt für:

TransformVectors(PointF[])

Multipliziert jeden Vektor in einem Array mit der Matrix. Die zu verschiebenden Elemente dieser Matrix (dritte Zeile) werden ignoriert.

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

Parameter

pts
PointF[]

Ein Array von Point-Strukturen, das die zu transformierenden Punkte darstellt.

Beispiele

Ein Beispiel finden Sie unter TransformVectors(Point[]).

Gilt für: