Bir Nesneyi Eğme
Bir nesneyi eğmek (veya yammak) x ekseninden, y ekseninden veya her ikisinden belirli bir açıyla çarpıtmak anlamına gelir. Örneğin, bir kareyi eğdiğinizde, bu bir paralelograma dönüşür.
Matrix3x2F::Skew yöntemi 3 parametre alır:
- angleX: y ekseninden saat yönünün tersine derece cinsinden ölçülen x ekseni eğme açısı.
- angleY: X ekseninden saat yönünde derece cinsinden ölçülen y ekseni eğme açısı.
- centerPoint: Eğriltme işleminin gerçekleştirildiği nokta.
Eğriltme dönüşümünün etkisini tahmin etmek için angleX 'in y ekseninden saat yönünün tersine derece cinsinden ölçülen eğriltme açısı olduğunu unutmayın. Örneğin, angleX 30 olarak ayarlanırsa nesne, centerPointhakkında y ekseni boyunca saat yönünün tersine 30 derece eğilir. Aşağıdaki çizimde, karenin sol üst köşesi hakkında yatay olarak 30 derece eğilmiş bir kare gösterilmektedir.
Benzer şekilde, angleY x ekseninden saat yönünde derece cinsinden ölçülen bir eğme açısıdır. Örneğin, angleY 30 olarak ayarlanırsa, nesne centerPointhakkında x ekseni boyunca saat yönünde 30 derece eğilir. Aşağıdaki çizimde, karenin sol üst köşesi hakkında dikey olarak 30 derece eğilmiş kare gösterilmektedir.
x ekseninden saat yönünde 30 derece eğilmiş karenin
angleX ve angleY 30 derece olarak ayarlarsanız ve centerPoint karenin sol üst köşesine ayarlarsanız, aşağıdaki eğilmiş kareyi (düz ana hatlı) görürsünüz. Çarpık karenin y ekseninden saat yönünün tersine 30 derece ve x ekseninden saat yönünde 30 derece dengesiz olduğuna dikkat edin.
Aşağıdaki kod örneği, kareyi sol üst köşesi etrafında yatay olarak 45 derece eğilir.
// 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şağıdaki çizimde, özgün karenin noktalı bir ana hat olduğu ve eğilmiş nesnenin (paralelogram) düz bir ana hat olduğu kareye eğme dönüştürmesi uygulamanın etkisi gösterilmektedir. Eğme açısının y ekseninden saat yönünün tersine 45 derece olduğuna dikkat edin.
İlgili konular