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.
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.
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 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.
Kapcsolódó témakörök