Come distorcere un oggetto
Inclinare (o tagliare) un oggetto significa distorcere un oggetto di un angolo specificato rispetto all'asse X, all'asse Y, o ad entrambi. Ad esempio, quando si asimmetria un quadrato, diventa un parallelogramma.
Il metodo Matrix3x2F::Skew accetta 3 parametri:
- angoloX: angolo di inclinazione dell'asse x, misurato in gradi in senso antiorario dall'asse y.
- angolo di inclinazione: L'angolo di inclinazione dell'asse y, misurato in gradi in senso orario dall'asse x.
- centerPoint: il punto attorno al quale viene eseguita la distorsione.
Per stimare l'effetto di una trasformazione asimmetria, considerare che angleX è l'angolo di asimmetria misurato in gradi in senso antiorario dall'asse y. Ad esempio, se angoloX è impostato su 30, l'oggetto si sfasa in senso antiorario di 30 gradi lungo l'asse y sull'centerPoint. L'illustrazione seguente mostra un quadrato inclinato orizzontalmente di 30 gradi attorno all'angolo superiore sinistro del quadrato.
Analogamente, angoloY è un angolo di asimmetria misurato in gradi in senso orario rispetto all'asse x. Se, ad esempio, l'angoloY è impostato su 30, l'oggetto viene inclinato di 30 gradi in senso orario lungo l'asse x intorno al punto centrale . La figura seguente mostra un quadrato asimmetrico verticalmente di 30 gradi circa l'angolo superiore sinistro del quadrato.
Se si imposta sia angleX che angoloY su 30 gradi e il centerPoint all'angolo superiore sinistro del quadrato, verrà visualizzato il quadrato asimmetrico seguente (con contorno a tinta unita). Si noti che il quadrato asimmetrico è asimmetrico di 30 gradi in senso antiorario dall'asse y e 30 gradi in senso orario dall'asse x.
Nell'esempio di codice seguente l'inclinazione del quadrato è di 45 gradi orizzontalmente sull'angolo superiore sinistro del quadrato.
// 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);
La figura seguente mostra l'effetto dell'applicazione della trasformazione asimmetria al quadrato, dove il quadrato originale è un contorno punteggiato e l'oggetto asimmetrico (parallelogramma) è un contorno solido. Si noti che l'angolo di asimmetria è di 45 gradi in senso antiorario dall'asse y.
Argomenti correlati