Jak škálovat objekt
Toto téma popisuje, jak škálovat objekt pomocí třídy Matrix3x2F. Pokud chcete objekt zvětšit nebo zmenšit, znamená to, že objekt zvětšíte nebo zmenšíte. Ke škálování objektu můžete volat jednu z následujících dvou metod.
- Matrix3x2F::Scale(D2D1_SIZE_F scalefactor, D2D1_POINT_2F centerpoint)
- Matrix3x2F::Scale(float scalex, float scaley, D2D1_POINT_2F centerpoint)
První metoda ukládá scalex a scaley jako seřazenou dvojici hodnot s plovoucí desetinnou čárkou ve struktuře D2D1_SIZE_F. Druhá metoda definuje scalex a scaley jako samostatné parametry.
Bez ohledu na to, kterou metodu použijete, je nutné zadat faktory scalex a scaley. Hodnota scalex je měřítko v ose x. Například hodnota škály 1,5 roztáhne objekt na 150 procent v ose x. Podobně je měřítko hodnota měřítka ve směru y. Například škálovat hodnotu 0,5 zmenší výšku objektu o 50 procent podél osy y.
Pokud chcete určit bod jako střed operace škálování, použijte parametr středový bod. Ve výchozím nastavení se objekt zacentruje kolem jeho původu (0,0).
Následující ukázkový kód vytvoří transformaci měřítka, která zvětší velikost čtverce na 130% původní velikosti. středový bod je nastavený na levý horní roh původního čtverce.
// Create a rectangle.
D2D1_RECT_F rectangle = D2D1::Rect(438.0f, 80.5f, 498.0f, 140.5f);
// Draw the outline of the rectangle.
m_pRenderTarget->DrawRectangle(
rectangle,
m_pOriginalShapeBrush,
1.0f,
m_pStrokeStyleDash
);
// Apply the scale transform to the render target.
m_pRenderTarget->SetTransform(
D2D1::Matrix3x2F::Scale(
D2D1::Size(1.3f, 1.3f),
D2D1::Point2F(438.0f, 80.5f))
);
// Paint the rectangle's interior.
m_pRenderTarget->FillRectangle(rectangle, m_pFillBrush);
// Draw the outline of the rectangle.
m_pRenderTarget->DrawRectangle(rectangle, m_pTransformedShapeBrush);
Následující obrázek znázorňuje vliv použití transformace měřítka na čtverec. Původní čtverec je s tečkovaným obrysem a škálovaný čtverec je s plným obrysem.
Související témata