Skalieren eines Objekts
In diesem Thema wird beschrieben, wie Ein Objekt mithilfe der Matrix3x2F-Klasse skaliert wird. Wenn Sie ein Objekt skalieren möchten, müssen Sie das Objekt vergrößern oder verkleineren. Sie können eine der beiden folgenden Methoden aufrufen, um ein Objekt zu skalieren.
- Matrix3x2F::Scale(D2D1_SIZE_F Scalefactor, D2D1_POINT_2F Mittelpunkt)
- Matrix3x2F::Scale(float scalex, float scaley, D2D1_POINT_2F Mittelpunkt)
Die erste Methode speichert scalex und scaley als geordnetes Paar von Gleitkommawerten in der D2D1_SIZE_F-Struktur . Die zweite Methode definiert scalex und scaley als einzelne Parameter.
Unabhängig davon, welche Methode Sie verwenden, müssen Sie sowohl Scalex - als auch Skalierungsfaktoren angeben. Der Scalex-Wert ist der Skalierungsfaktor in x-Richtung. Ein Scalex-Wert von 1,5 dehnt das Objekt beispielsweise auf 150 Prozent entlang der x-Achse. In ähnlicher Weise ist der Skalierungswert der Skalierungsfaktor in y-Richtung. Ein Skalierungswert von 0,5 verkleinern beispielsweise die Höhe des Objekts entlang der y-Achse um 50 Prozent.
Um einen Punkt als Mittelpunkt des Skalierungsvorgangs anzugeben, verwenden Sie den Centerpoint-Parameter . Standardmäßig ist ein Objekt über seinen Ursprung (0,0) zentriert.
Der folgende Beispielcode erstellt eine Skalierungstransformation, um die Größe eines Quadrats auf 130 % der ursprünglichen Größe zu erhöhen. Der Mittelpunkt wird auf die linke obere Ecke des ursprünglichen Quadrats festgelegt.
// 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);
Die folgende Abbildung zeigt den Effekt des Anwendens der Skalierungstransformation auf das Quadrat. Das ursprüngliche Quadrat ist ein gepunkteter Umriss, und das skalierte Quadrat ist ein durchgezogener Umriss.
Zugehörige Themen