Cara Menyimpangkan Objek

Untuk condong (atau geser) objek berarti mendistorsi objek dengan sudut tertentu dari sumbu x, sumbu y, atau keduanya. Misalnya, ketika Anda condong persegi, itu menjadi parallelogram.

Metode Matrix3x2F::Skew mengambil 3 parameter:

  • angleX: Sudut condong sumbu x, yang diukur dalam derajat berlawanan arah jarum jam dari sumbu y.
  • sudut: Sudut condong sumbu y, yang diukur dalam derajat searah jarum jam dari sumbu x.
  • centerPoint: Titik di mana kecondongan dilakukan.

Untuk memprediksi efek transformasi condong, pertimbangkan bahwa angleX adalah sudut condong yang diukur dalam derajat berlawanan arah jarum jam dari sumbu y. Misalnya, jika angleX diatur ke 30, objek condong 30 derajat berlawanan arah jarum jam di sepanjang sumbu y tentang centerPoint. Ilustrasi berikut menunjukkan persegi condong secara horizontal 30 derajat tentang sudut kiri atas persegi.

illustration of a square skewed 30 degrees counterclockwise from the y-axis

Demikian pula, angleY adalah sudut condong yang diukur dalam derajat searah jarum jam dari sumbu x. Misalnya, jika sudutY diatur ke 30, objek condong 30 derajat searah jarum jam di sepanjang sumbu x tentang centerPoint. Ilustrasi berikut menunjukkan persegi condong secara vertikal 30 derajat tentang sudut kiri atas persegi.

illustration of a square skewed 30 degrees clockwise from the x-axis

Jika Anda mengatur sudutX dan sudut ke 30 derajat, dan centerPoint ke sudut kiri atas persegi, Anda akan melihat persegi miring berikut (diuraikan padat). Perhatikan bahwa persegi miring condong 30 derajat berlawanan arah jarang dari sumbu y dan 30 derajat searah jarang dari sumbu x.

illustration of a square skewed 30 degrees counterclockwise from the y-axis and 30 degrees clockwise from the x-axis

Contoh kode berikut condong persegi 45 derajat secara horizontal tentang sudut kiri atas persegi.

    // 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);

Ilustrasi berikut menunjukkan efek menerapkan transformasi condong ke persegi, di mana persegi asli adalah kerangka putus-putus dan objek miring (parallelogram) adalah kerangka padat. Perhatikan bahwa sudut condong adalah 45 derajat berlawanan arah jarum jam dari sumbu y.

illustration of a square skewed 45 degrees counterclockwise from the y-axis

Gambaran Umum Transformasi Direct2D

Referensi Direct2D