Megosztás a következőn keresztül:


Objektum elforgatása

Egy objektum elvarrása (vagy nyírása) azt jelenti, hogy egy objektumot az x tengelytől, az y tengelytől vagy mindkettőtől meghatározott szögben eltorzít. Például, ha torzít egy négyzetet, abból paralelogramma lesz.

A Matrix3x2F::Skew metódus 3 paramétert vesz igénybe:

  • angleX: Az x tengely ferde szöge, amelyet az y tengelytől az óramutató járásával ellentétes irányban mérünk fokokban.
  • szöges: Az y tengely dőlési szöge, amelyet az x tengelytől órairányban mérünk.
  • centerPoint: Az a pont, amely körül az elforgatás történik.

A ferdeség-átalakítás hatásának előrejelzéséhez vegye figyelembe, hogy angleX az y tengelytől az óramutató járásával ellentétes irányban, fokokban mért ferdeszög. Ha például angleX értéke 30, az objektum az y-tengely mentén 30 fokkal az óramutató járásával ellentétes irányban elfordul az centerPointkörül. Az alábbi ábrán egy négyzet látható, amely 30 fokkal vízszintesen elforgatott a négyzet bal felső sarka körül.

egy négyzet ábrája, amely 30 fokkal az y tengelyhez képest ellenkező irányba el van döntve

Hasonlóképpen, szög az x tengelytől az óramutató járásával megegyező irányban, fokban mért ferde szög. Ha például angleY 30-ra van állítva, az objektum az óramutató járásával megegyező irányban 30 fokkal el van ferdítve az x tengely mentén a középpontkörül. Az alábbi ábrán egy olyan négyzet látható, amelyet a bal felső sarka körül függőlegesen 30 fokkal döntöttek el.

x tengelytől 30 fokkal jobbra eltolt négyzet illusztrációja

Ha mind az angleX, mind az angleY értékét 30 fokra állítja, és a centerPoint-t a négyzet bal felső sarkára állítja, a következő ferde négyzet jelenik meg (folytonos vonallal határolt). Figyelje meg, hogy a ferde négyzet az y tengelytől 30 fokkal ellentétes irányban, az x tengelytől pedig az óramutató járásával megegyező irányban 30 fokkal van elferdítve.

Az y-tengelyhez képest 30 fokkal az óramutató járásával ellentétes irányban és az x-tengelyhez képest 30 fokkal az óramutató járásával megegyező irányban elforgatott négyzet ábrája

Az alábbi példakód vízszintesen 45 fokkal ferdíti a négyzetet a bal felső sarkán.

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

Az alábbi ábrán a ferdeség transzformáció négyzetre való alkalmazásának hatása látható, ahol az eredeti négyzet pontozott körvonal, a ferde objektum (parallelogram) pedig egy folytonos körvonal. Figyelje meg, hogy a ferde szög 45 fokkal ellentétes az y tengelytől.

egy négyzet ábrája, amely 45 fokkal el van fordítva az y-tengelytől az óramutató járásával ellentétes irányba

Direct2D-átalakítások áttekintése

Direct2D-referencia