Matrix.Multiply Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Overload
Multiply(Matrix) |
Moltiplica questo Matrix per la matrice specificata nel parametro |
Multiply(Matrix, MatrixOrder) |
Moltiplica questo Matrix per la matrice specificata nel parametro |
Multiply(Matrix)
- Origine:
- Matrix.cs
- Origine:
- Matrix.cs
- Origine:
- Matrix.cs
- Origine:
- Matrix.cs
- Origine:
- Matrix.cs
public:
void Multiply(System::Drawing::Drawing2D::Matrix ^ matrix);
public void Multiply (System.Drawing.Drawing2D.Matrix matrix);
member this.Multiply : System.Drawing.Drawing2D.Matrix -> unit
Public Sub Multiply (matrix As Matrix)
Parametri
Esempio
Per un esempio, vedere Multiply.
Si applica a
Multiply(Matrix, MatrixOrder)
- Origine:
- Matrix.cs
- Origine:
- Matrix.cs
- Origine:
- Matrix.cs
- Origine:
- Matrix.cs
- Origine:
- Matrix.cs
Moltiplica questo Matrix per la matrice specificata nel parametro matrix
e nell'ordine specificato nel parametro order
.
public:
void Multiply(System::Drawing::Drawing2D::Matrix ^ matrix, System::Drawing::Drawing2D::MatrixOrder order);
public void Multiply (System.Drawing.Drawing2D.Matrix matrix, System.Drawing.Drawing2D.MatrixOrder order);
member this.Multiply : System.Drawing.Drawing2D.Matrix * System.Drawing.Drawing2D.MatrixOrder -> unit
Public Sub Multiply (matrix As Matrix, order As MatrixOrder)
Parametri
- order
- MatrixOrder
Oggetto MatrixOrder che rappresenta l'ordine della moltiplicazione.
Esempio
L'esempio di codice seguente è progettato per l'uso con Windows Form e richiede PaintEventArgse
, un oggetto evento Paint. Il codice esegue le azioni seguenti:
Crea tre matrici.
Elenca il contenuto della matrice 1 sullo schermo.
Moltiplica la matrice 1 per matrice 2 e archivia il risultato nella matrice 1.
Elenca il contenuto della matrice 1 sullo schermo.
Moltiplica il risultato archiviato nella matrice 1 per matrice 3 e archivia di nuovo il risultato nella matrice 1.
Elenca il contenuto della matrice 1 sullo schermo.
Disegna un rettangolo sullo schermo prima di applicare la trasformazione matrice 1 (il rettangolo blu).
Applica la trasformazione al rettangolo.
Disegna il rettangolo trasformato sullo schermo (rettangolo rosso), usando le stesse coordinate del rettangolo precedente.
Si noti che il rettangolo rosso è stato ridimensionato da un fattore di due nella direzione orizzontale, quindi ruotato di 90 gradi e quindi spostato (convertito) 250 punti nella direzione x e 50 punti nella direzione y.
public:
void MultiplyExample( PaintEventArgs^ e )
{
Pen^ myPen = gcnew Pen( Color::Blue,1.0f );
Pen^ myPen2 = gcnew Pen( Color::Red,1.0f );
// Set up the matrices.
Matrix^ myMatrix1 = gcnew Matrix( 2.0f,0.0f,0.0f,1.0f,0.0f,0.0f );
Matrix^ myMatrix2 = gcnew Matrix( 0.0f,1.0f,-1.0f,0.0f,0.0f,0.0f );
Matrix^ myMatrix3 = gcnew Matrix( 1.0f,0.0f,0.0f,1.0f,250.0f,50.0f );
// Display the elements of the starting matrix.
ListMatrixElements( e, myMatrix1, "Beginning Matrix", 6, 40 );
// Multiply Matrix1 by Matrix 2.
myMatrix1->Multiply( myMatrix2, MatrixOrder::Append );
// Display the result of the multiplication of Matrix1 and
// Matrix2.
ListMatrixElements( e, myMatrix1, "Matrix After 1st Multiplication", 6, 60 );
// Multiply the result from the previous multiplication by
// Matrix3.
myMatrix1->Multiply( myMatrix3, MatrixOrder::Append );
// Display the result of the previous multiplication
// multiplied by Matrix3.
ListMatrixElements1( e, myMatrix1, "Matrix After 2nd Multiplication", 6, 80 );
// Draw the rectangle prior to transformation.
e->Graphics->DrawRectangle( myPen, 0, 0, 100, 100 );
// Make the transformation.
e->Graphics->Transform = myMatrix1;
// Draw the rectangle after transformation.
e->Graphics->DrawRectangle( myPen2, 0, 0, 100, 100 );
}
//-------------------------------------------------------
// The following function is a helper function to
// list the contents of a matrix.
//-------------------------------------------------------
void ListMatrixElements1( 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 MultiplyExample(PaintEventArgs e)
{
Pen myPen = new Pen(Color.Blue, 1);
Pen myPen2 = new Pen(Color.Red, 1);
// Set up the matrices.
Matrix myMatrix1 = new Matrix(
2.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f);
Matrix myMatrix2 = new Matrix(
0.0f, 1.0f, -1.0f, 0.0f, 0.0f, 0.0f);
Matrix myMatrix3 = new Matrix(
1.0f, 0.0f, 0.0f, 1.0f, 250.0f, 50.0f);
// Display the elements of the starting matrix.
ListMatrixElements(e, myMatrix1, "Beginning Matrix", 6, 40);
// Multiply Matrix1 by Matrix 2.
myMatrix1.Multiply(myMatrix2, MatrixOrder.Append);
// Display the result of the multiplication of Matrix1 and
// Matrix2.
ListMatrixElements(e,
myMatrix1,
"Matrix After 1st Multiplication",
6,
60);
// Multiply the result from the pervious multiplication by
// Matrix3.
myMatrix1.Multiply(myMatrix3, MatrixOrder.Append);
// Display the result of the previous multiplication
// multiplied by Matrix3.
ListMatrixElements1(e,
myMatrix1,
"Matrix After 2nd Multiplication",
6,
80);
// Draw the rectangle prior to transformation.
e.Graphics.DrawRectangle(myPen, 0, 0, 100, 100);
// Make the transformation.
e.Graphics.Transform = myMatrix1;
// Draw the rectangle after transformation.
e.Graphics.DrawRectangle(myPen2, 0, 0, 100, 100);
}
//-------------------------------------------------------
// The following function is a helper function to
// list the contents of a matrix.
//-------------------------------------------------------
public void ListMatrixElements1(
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 MultiplyExample(ByVal e As PaintEventArgs)
Dim myPen As New Pen(Color.Blue, 1)
Dim myPen2 As New Pen(Color.Red, 1)
' Set up the matrices.
Dim myMatrix1 As New Matrix(2.0F, 0.0F, 0.0F, 1.0F, 0.0F, 0.0F)
' Scale.
Dim myMatrix2 As New Matrix(0.0F, 1.0F, -1.0F, 0.0F, 0.0F, 0.0F)
' Rotate 90.
Dim myMatrix3 As New Matrix(1.0F, 0.0F, 0.0F, 1.0F, 250.0F, 50.0F)
' Display the elements of the starting matrix.
ListMatrixElementsHelper(e, myMatrix1, "Beginning Matrix", 6, 40)
' Multiply Matrix1 by Matrix 2.
myMatrix1.Multiply(myMatrix2, MatrixOrder.Append)
' Display the result of the multiplication of Matrix1 and
' Matrix2.
ListMatrixElementsHelper(e, myMatrix1, _
"Matrix After 1st Multiplication", 6, 60)
' Multiply the result from the pervious multiplication by
' Matrix3.
myMatrix1.Multiply(myMatrix3, MatrixOrder.Append)
' Display the result of the previous multiplication
' multiplied by Matrix3.
ListMatrixElementsHelper1(e, myMatrix1, _
"Matrix After 2nd Multiplication", 6, 80)
' Draw the rectangle prior to transformation.
e.Graphics.DrawRectangle(myPen, 0, 0, 100, 100)
e.Graphics.Transform = myMatrix1
' Draw the rectangle after transformation.
e.Graphics.DrawRectangle(myPen2, 0, 0, 100, 100)
End Sub
' A helper function to list the contents of a matrix.
Public Sub ListMatrixElementsHelper1(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
Commenti
Se l'ordine specificato è Prepend, questo Matrix viene moltiplicato per la matrice specificata in un ordine anteporto. Se l'ordine specificato è Append, questo Matrix viene moltiplicato per la matrice specificata in un ordine accodato.