Matrix.Reset Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Resetuje toto Matrix nastavení tak, aby měly prvky matice identit.
public:
void Reset();
public void Reset ();
member this.Reset : unit -> unit
Public Sub Reset ()
Příklady
Následující příklad kódu je navržený pro použití s model Windows Forms a vyžaduje PaintEventArgse
objekt Paint události . Kód provede následující akce:
Vytvoří matici škálování.
Seznamy prvky matice na obrazovku.
Obnoví matici na identitu.
Seznamy prvky na obrazovku.
Převede matici o 50 bodů na ose x a 40 bodů na ose y.
Seznamy prvky přeložené matice na obrazovku.
Nakreslí na obrazovku obdélník před použitím maticové transformace (modrý obdélník).
Použije transformaci na obdélník.
Nakreslí transformovaný obdélník na obrazovku (červený obdélník) pomocí stejných souřadnic jako předchozí obdélník.
Všimněte si, že červený obdélník nebyl škálován (kvůli resetování), ale byl přeložen na ose x a y.
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
Poznámky
Prvky na hlavní úhlopříčce matice identit jsou 1. Všechny ostatní prvky matice identit jsou 0.
Platí pro
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro