Como distorcer um objeto
Distorcer (ou estornar) um objeto significa distorcer um objeto por um ângulo especificado do eixo x, do eixo y ou ambos. Por exemplo, quando você distorce um quadrado, ele se transforma em um paralelogramo.
O método Matrix3x2F::Skew usa 3 parâmetros:
- angleX: o ângulo de distorção do eixo x, que é medido em graus no sentido anti-horário do eixo y.
- angleY: o ângulo de distorção do eixo y, que é medido em graus no sentido horário do eixo x.
- centerPoint: o ponto sobre o qual a distorção é executada.
Para prever o efeito de uma transformação de distorção, considere que angleX é o ângulo de distorção medido em graus no sentido anti-horário do eixo y. Por exemplo, se angleX for definido como 30, o objeto distorce 30 graus no sentido anti-horário ao longo do eixo y sobre o centerPoint. A ilustração a seguir mostra um quadrado distorcido horizontalmente 30 graus sobre o canto superior esquerdo do quadrado.
Da mesma forma, angleY é um ângulo de distorção medido em graus no sentido horário do eixo x. Por exemplo, se angleY for definido como 30, o objeto distorce 30 graus no sentido horário ao longo do eixo x sobre o centerPoint. A ilustração a seguir mostra um quadrado distorcido verticalmente 30 graus sobre o canto superior esquerdo do quadrado.
Se você definir angleX e angleY como 30 graus, e o centerPoint para o canto superior esquerdo do quadrado, você verá o quadrado distorcido a seguir (delineado sólido). Observe que o quadrado distorcido é distorcido 30 graus no sentido anti-horário do eixo y e 30 graus no sentido horário do eixo x.
O exemplo de código a seguir distorce o quadrado de 45 graus horizontalmente sobre o canto superior esquerdo do quadrado.
// Create a rectangle.
D2D1_RECT_F rectangle = D2D1::Rect(126.0f, 301.5f, 186.0f, 361.5f);
// Draw the outline of the rectangle.
m_pRenderTarget->DrawRectangle(
rectangle,
m_pOriginalShapeBrush,
1.0f,
m_pStrokeStyleDash
);
// Apply the skew transform to the render target.
m_pRenderTarget->SetTransform(
D2D1::Matrix3x2F::Skew(
45.0f,
0.0f,
D2D1::Point2F(126.0f, 301.5f))
);
// Paint the interior of the rectangle.
m_pRenderTarget->FillRectangle(rectangle, m_pFillBrush);
// Draw the outline of the rectangle.
m_pRenderTarget->DrawRectangle(rectangle, m_pTransformedShapeBrush);
A ilustração a seguir mostra o efeito de aplicar a transformação de distorção ao quadrado, em que o quadrado original é um contorno pontilhado e o objeto distorcido (parallelogram) é um contorno sólido. Observe que o ângulo de distorção é 45 graus no sentido anti-horário do eixo y.
Tópicos relacionados