Matrix.Shear Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.