Matrix.Reset 方法
定义
public:
void Reset();
public void Reset ();
member this.Reset : unit -> unit
Public Sub Reset ()
示例
下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgs e 一个 Paint 事件对象。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, an Paint event object. 此代码执行以下操作:The code performs the following actions:
创建缩放矩阵。Creates a scaling matrix.
在屏幕上列出矩阵元素。Lists the matrix elements to the screen.
将矩阵重置为标识。Resets the matrix to identity.
列出屏幕上的元素。Lists the elements to the screen.
在 x 轴上将矩阵平移50点,在 y 轴上转换40点。Translates the matrix by 50 points in the x-axis and 40 points in the y-axis.
列出翻译后的矩阵在屏幕上的元素。Lists the elements of the translated matrix to the screen.
在应用矩阵变换 (蓝色矩形) 之前,绘制一个矩形。Draws a rectangle is drawn to the screen prior to applying the matrix transform (the blue rectangle).
将转换应用到矩形。Applies the transform to the rectangle.
绘制已转换的矩形,并使用与上一个矩形相同的坐标,将 (红色矩形绘制到屏幕) 。Draws the transformed rectangle is drawn to the screen (the red rectangle), using the same coordinates as the previous rectangle.
请注意,因为重置) 但在 x 轴和 y 轴中进行了转换,因此红色矩形未缩放 (。Notice that the red rectangle was not scaled (because of the reset) but was translated in the x-axis and y-axis.
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
注解
恒等矩阵的主对角线上的元素是1。The elements on the main diagonal of the identity matrix are 1. 标识矩阵的所有其他元素均为0。All other elements of the identity matrix are 0.