Condividi tramite


Matrix.Shear Metodo

Definizione

Applica il vettore di taglio specificato a questo Matrix anteponendo il vettore di taglio.

Overload

Shear(Single, Single, MatrixOrder)

Applica il vettore di taglio specificato a questo Matrix nell'ordine specificato.

Shear(Single, Single)

Applica il vettore di taglio specificato a questo Matrix anteponendo la trasformazione shear.

Shear(Single, Single, MatrixOrder)

Origine:
Matrix.cs
Origine:
Matrix.cs
Origine:
Matrix.cs
Origine:
Matrix.cs
Origine:
Matrix.cs

Applica il vettore di taglio specificato a questo Matrix nell'ordine specificato.

public:
 void Shear(float shearX, float shearY, System::Drawing::Drawing2D::MatrixOrder order);
public void Shear (float shearX, float shearY, System.Drawing.Drawing2D.MatrixOrder order);
member this.Shear : single * single * System.Drawing.Drawing2D.MatrixOrder -> unit
Public Sub Shear (shearX As Single, shearY As Single, order As MatrixOrder)

Parametri

shearX
Single

Fattore di taglio orizzontale.

shearY
Single

Fattore di taglio verticale.

order
MatrixOrder

Oggetto MatrixOrder che specifica l'ordine (accodamento o anteporre) in cui viene applicata l'shear.

Esempio

Per un esempio, vedere Shear(Single, Single).

Commenti

La trasformazione applicata in questo metodo è una taglio pura solo se uno dei parametri è 0. Applicato a un rettangolo all'origine, quando il fattore di shearY è 0, la trasformazione sposta il bordo inferiore orizzontalmente shearX volte l'altezza del rettangolo. Quando il fattore di shearX è 0, sposta il bordo destro verticalmente shearY volte la larghezza del rettangolo. Attenzione è in ordine quando entrambi i parametri sono diversi da zero, perché i risultati sono difficili da stimare. Ad esempio, se entrambi i fattori sono 1, la trasformazione è singolare (di conseguenza non invertibile), accodando l'intero piano a una singola riga.

Si applica a

Shear(Single, Single)

Origine:
Matrix.cs
Origine:
Matrix.cs
Origine:
Matrix.cs
Origine:
Matrix.cs
Origine:
Matrix.cs

Applica il vettore di taglio specificato a questo Matrix anteponendo la trasformazione shear.

public:
 void Shear(float shearX, float shearY);
public void Shear (float shearX, float shearY);
member this.Shear : single * single -> unit
Public Sub Shear (shearX As Single, shearY As Single)

Parametri

shearX
Single

Fattore di taglio orizzontale.

shearY
Single

Fattore di taglio verticale.

Esempio

L'esempio di codice seguente è progettato per l'uso con Windows Form e richiede PaintEventArgse, un oggetto evento Paint. Il codice esegue l'azione seguente:

  • Disegna un rettangolo sullo schermo, usando una penna verde, prima di applicare una trasformazione di ridimensionamento.

  • Crea un Matrix e lo usa per impostare una trasformazione della coordinata globale per l'Graphics.

  • Disegna un altro rettangolo usando una penna rossa.

  • Disegna un'ellisse utilizzando una penna blu.

Il risultato è un rettangolo verde, un parallelogramma rosso e un ellisse blu trasformato. Si noti che il rettangolo verde (disegnato prima di impostare la trasformazione) usa direttamente le coordinate fornite nella chiamata DrawRectangle. Le altre due figure vengono trasformate prima del disegno. Il rettangolo viene trasformato in un parallelogramma (rosso) e l'ellisse (blu) viene trasformato in modo da adattarsi al parallelogramma trasformato. Si noti che la parte inferiore del rettangolo viene spostata (sheared) nell'asse x da un fattore pari a due volte l'altezza del rettangolo, formando così il parallelogramma.

public:
   void MatrixShearExample( PaintEventArgs^ e )
   {
      Matrix^ myMatrix = gcnew Matrix;
      myMatrix->Shear( 2, 0 );
      e->Graphics->DrawRectangle( gcnew Pen( Color::Green ), 0, 0, 100, 50 );
      e->Graphics->MultiplyTransform( myMatrix );
      e->Graphics->DrawRectangle( gcnew Pen( Color::Red ), 0, 0, 100, 50 );
      e->Graphics->DrawEllipse( gcnew Pen( Color::Blue ), 0, 0, 100, 50 );
   }
public void MatrixShearExample(PaintEventArgs e)
{
    Matrix myMatrix = new Matrix();
    myMatrix.Shear(2, 0);
    e.Graphics.DrawRectangle(new Pen(Color.Green), 0, 0, 100, 50);
    e.Graphics.MultiplyTransform(myMatrix);
    e.Graphics.DrawRectangle(new Pen(Color.Red), 0, 0, 100, 50);
    e.Graphics.DrawEllipse(new Pen(Color.Blue), 0, 0, 100, 50);
}
Public Sub MatrixShearExample(ByVal e As PaintEventArgs)
    Dim myMatrix As New Matrix
    myMatrix.Shear(2, 0)
    e.Graphics.DrawRectangle(New Pen(Color.Green), 0, 0, 100, 50)
    e.Graphics.MultiplyTransform(myMatrix)
    e.Graphics.DrawRectangle(New Pen(Color.Red), 0, 0, 100, 50)
    e.Graphics.DrawEllipse(New Pen(Color.Blue), 0, 0, 100, 50)
End Sub

Commenti

La trasformazione applicata in questo metodo è una taglio pura solo se uno dei parametri è 0. Applicato a un rettangolo all'origine, quando il fattore di shearY è 0, la trasformazione sposta il bordo inferiore orizzontalmente shearX volte l'altezza del rettangolo. Quando il fattore di shearX è 0, sposta il bordo destro verticalmente shearY volte la larghezza del rettangolo. Attenzione è in ordine quando entrambi i parametri sono diversi da zero, perché i risultati sono difficili da stimare. Ad esempio, se entrambi i fattori sono 1, la trasformazione è singolare (di conseguenza non invertibile), accodando l'intero piano a una singola riga.

Si applica a