Hoe een object schalen
In dit onderwerp wordt beschreven hoe u een object schaalt met behulp van de klasse Matrix3x2F. Als u een object wilt schalen, betekent dit dat het object groter of kleiner wordt. U kunt een van de volgende twee methoden aanroepen om een object te schalen.
- Matrix3x2F::Scale(D2D1_SIZE_F scalefactor, D2D1_POINT_2F centerpoint)
- Matrix3x2F::Scale(float scalex, float scaley, D2D1_POINT_2F centerpoint)
Met de eerste methode worden scalex en scaley opgeslagen als een geordend paar drijvende-kommawaarden in de D2D1_SIZE_F-structuur. De tweede methode definieert scalex en scaley als afzonderlijke parameters.
Ongeacht welke methode u gebruikt, moet u zowel de scalex- als de scaley- factoren opgeven. De scalex waarde is de schaalfactor in de x-richting. Met een scalex waarde van 1,5 wordt het object bijvoorbeeld uitgerekt tot 150 procent langs de x-as. Op dezelfde manier is de schaalwaarde de schaalfactor in de y-richting. Een schaal waarde van 0,5 verkleint bijvoorbeeld de hoogte van het object met 50 procent langs de y-as.
Als u een punt wilt opgeven als het midden van de schaalbewerking, gebruikt u de parameter centerpoint. Een object is standaard gecentreerd over de oorsprong (0,0).
Met de volgende voorbeeldcode wordt een schaaltransformatie gemaakt om de grootte van een vierkant te vergroten tot 130% van de oorspronkelijke grootte. Het middelpunt is ingesteld op de linkerbovenhoek van het oorspronkelijke vierkant.
// 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);
In de volgende afbeelding ziet u het effect van het toepassen van de schaaltransformatie op het vierkant. Het oorspronkelijke vierkant is een gestippelde omtrek en het geschaalde vierkant is een ononderbroken lijn.
Verwante onderwerpen
-
Overzicht van Direct2D-transformaties