Aracılığıyla paylaş


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.

y ekseninden saat yönünün tersine 30 derece eğilmiş kare çizimi

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 çizimi

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.

y ekseninden saat yönünün tersine 30 derece ve x ekseninden saat yönünde 30 derece eğilmiş bir karenin tasviri

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.

y ekseninden saat yönünün tersine 45 derece kaydırılmış kare illüstrasyonu

Direct2D Dönüşümlerine Genel Bakış

Direct2D Başvuru