Matrix.Reset Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee stelt u de Matrix elementen van de identiteitsmatrix opnieuw in.
public:
void Reset();
public void Reset();
member this.Reset : unit -> unit
Public Sub Reset ()
Voorbeelden
Het volgende codevoorbeeld is ontworpen voor gebruik met Windows Forms en vereist PaintEventArgse, een Paint-gebeurtenisobject. De code voert de volgende acties uit:
Hiermee maakt u een schaalmatrix.
Geeft een lijst weer van de matrixelementen op het scherm.
Hiermee stelt u de matrix opnieuw in op identiteit.
Geeft een lijst weer van de elementen op het scherm.
Vertaalt de matrix met 50 punten op de x-as en 40 punten op de y-as.
Geeft een lijst weer van de elementen van de vertaalde matrix naar het scherm.
Hiermee tekent u een rechthoek op het scherm voordat u de matrixtransformatie (de blauwe rechthoek) toepast.
Hiermee wordt de transformatie toegepast op de rechthoek.
Hiermee tekent u de getransformeerde rechthoek op het scherm (de rode rechthoek), met behulp van dezelfde coördinaten als de vorige rechthoek.
U ziet dat de rode rechthoek niet is geschaald (vanwege de reset), maar is vertaald in de x-as en y-as.
public:
void ResetExample( PaintEventArgs^ e )
{
Pen^ myPen = gcnew Pen( Color::Blue,1.0f );
Pen^ myPen2 = gcnew Pen( Color::Red,1.0f );
// Create a matrix that scales by 5 in the x direction and
// by 3 in the y direction.
Matrix^ myMatrix = gcnew Matrix( 5.0f,0.0f,0.0f,3.0f,0.0f,0.0f );
// List the matrix elements to the screen.
ListMatrixElements( e, myMatrix, "Beginning Matrix", 6, 20 );
// Reset the matrix to identity.
myMatrix->Reset();
// Again list the matrix elements to the screen.
ListMatrixElements2( e, myMatrix, "Matrix After Reset", 6, 40 );
// Translate the matrix by 50 points in the x-axis and 40 points
// in the y-axis.
myMatrix->Translate( 50.0f, 40.0f );
// List the matrix elements to the screen.
ListMatrixElements1( e, myMatrix, "Matrix After Translation", 6, 60 );
// Draw a rectangle to the screen.
e->Graphics->DrawRectangle( myPen, 0, 0, 100, 100 );
// Apply the matrix transform to the Graphics.
e->Graphics->Transform = myMatrix;
// Draw another rectangle to the screen that has the transform
// applied.
e->Graphics->DrawRectangle( myPen2, 0, 0, 100, 100 );
}
//-------------------------------------------------------
// This function is a helper function to
// list the contents of a matrix.
//-------------------------------------------------------
void ListMatrixElements2( 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 ResetExample(PaintEventArgs e)
{
Pen myPen = new Pen(Color.Blue, 1);
Pen myPen2 = new Pen(Color.Red, 1);
// Create a matrix that scales by 5 in the x direction and
// by 3 in the y direction.
Matrix myMatrix = new Matrix(
5.0f, 0.0f, 0.0f, 3.0f, 0.0f, 0.0f);
// List the matrix elements to the screen.
ListMatrixElements(e, myMatrix, "Beginning Matrix", 6, 20);
// Reset the matrix to identity.
myMatrix.Reset();
// Again list the matrix elements to the screen.
ListMatrixElements2(e, myMatrix, "Matrix After Reset", 6, 40);
// Translate the matrix by 50 points in the x-axis and 40 points
// in the y-axis.
myMatrix.Translate(50.0f, 40.0f);
// List the matrix elements to the screen.
ListMatrixElements1(e, myMatrix, "Matrix After Translation", 6, 60);
// Draw a rectangle to the screen.
e.Graphics.DrawRectangle(myPen, 0, 0, 100, 100);
// Apply the matrix transform to the Graphics.
e.Graphics.Transform = myMatrix;
// Draw another rectangle to the screen that has the transform
// applied.
e.Graphics.DrawRectangle(myPen2, 0, 0, 100, 100);
}
//-------------------------------------------------------
// This function is a helper function to
// list the contents of a matrix.
//-------------------------------------------------------
public void ListMatrixElements2(
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 ResetExample(ByVal e As PaintEventArgs)
Dim myPen As New Pen(Color.Blue, 1)
Dim myPen2 As New Pen(Color.Red, 1)
Dim myMatrix As New Matrix(5.0F, 0.0F, 0.0F, 3.0F, 0.0F, 0.0F)
ListMatrixElementsHelper2(e, myMatrix, "Beginning Matrix", 6, 20)
myMatrix.Reset()
ListMatrixElementsHelper(e, myMatrix, "Matrix After Reset", 6, 40)
' Translate.
myMatrix.Translate(50.0F, 40.0F)
ListMatrixElementsHelper(e, myMatrix, "Matrix After Translation", _
6, 60)
e.Graphics.DrawRectangle(myPen, 0, 0, 100, 100)
e.Graphics.Transform = myMatrix
e.Graphics.DrawRectangle(myPen2, 0, 0, 100, 100)
End Sub
' A helper function to list the contents of a matrix.
Public Sub ListMatrixElementsHelper2(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
Opmerkingen
De elementen op de hoofddiagonaal van de identiteitsmatrix zijn 1. Alle andere elementen van de identiteitsmatrix zijn 0.