Matrix.Shear Método

Definição

Aplica o vetor de cisalhamento especificado a isto Matrix , antecedendo o vetor de cisalhamento.

Sobrecargas

Name Description
Shear(Single, Single)

Aplica o vetor de cisalhamento especificado a isto Matrix , antecedendo a transformação de cisalhamento.

Shear(Single, Single, MatrixOrder)

Aplica o vetor de cisalhamento especificado a isto Matrix na ordem especificada.

Shear(Single, Single)

Aplica o vetor de cisalhamento especificado a isto Matrix , antecedendo a transformação de cisalhamento.

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)

Parâmetros

shearX
Single

O fator de cisalhamento horizontal.

shearY
Single

O fator de cisalhamento vertical.

Exemplos

O seguinte exemplo de código foi concebido para uso com Windows Forms e requer PaintEventArgse, um objeto de evento Paint. O código executa a seguinte ação:

  • Desenha um retângulo para o ecrã, usando uma caneta verde, antes de aplicar uma transformação de escala.

  • Cria um Matrix e usa-o para definir uma transformada de coordenadas do mundo para o Graphics.

  • Desenha outro retângulo com uma caneta vermelha.

  • Desenha uma elipse usando uma caneta azul.

O resultado é um retângulo verde, um paralelogramo vermelho e uma elipse azul transformada. Note que o retângulo verde (desenhado antes de definir a transformação) usa diretamente as coordenadas fornecidas na DrawRectangle chamada. As outras duas figuras são transformadas antes do desenho. O retângulo é transformado num paralelogramo (vermelho), e a elipse (azul) é transformada para se encaixar no paralelogramo transformado. Note-se que a base do retângulo é movida (cortada) no eixo x por um fator de duas vezes a altura do retângulo, formando assim o paralelogramo.

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

Observações

A transformação aplicada neste método é um cisalhamento puro apenas se um dos parâmetros for 0. Aplicada a um retângulo na origem, quando o shearY fator é 0, a transformação move a aresta inferior horizontalmente multiplicada shearX pela altura do retângulo. Quando o shearX fator é 0, move a aresta direita verticalmente por shearY vezes a largura do retângulo. Deve-se ter cautela quando ambos os parâmetros são diferentes de zero, porque os resultados são difíceis de prever. Por exemplo, se ambos os fatores forem 1, a transformação é singular (daí não invertível), comprimindo todo o plano numa única linha.

Aplica-se a

Shear(Single, Single, MatrixOrder)

Aplica o vetor de cisalhamento especificado a isto Matrix na ordem especificada.

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)

Parâmetros

shearX
Single

O fator de cisalhamento horizontal.

shearY
Single

O fator de cisalhamento vertical.

order
MatrixOrder

A MatrixOrder que especifica a ordem (anexar ou prepender) em que o cisalhamento é aplicado.

Exemplos

Para obter um exemplo, consulte Shear(Single, Single).

Observações

A transformação aplicada neste método é um cisalhamento puro apenas se um dos parâmetros for 0. Aplicada a um retângulo na origem, quando o shearY fator é 0, a transformação move a aresta inferior horizontalmente multiplicada shearX pela altura do retângulo. Quando o shearX fator é 0, move a aresta direita verticalmente por shearY vezes a largura do retângulo. Deve-se ter cautela quando ambos os parâmetros são diferentes de zero, porque os resultados são difíceis de prever. Por exemplo, se ambos os fatores forem 1, a transformação é singular (daí não invertível), comprimindo todo o plano numa única linha.

Aplica-se a