Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird beschrieben, wie Sie ein Objekt mithilfe der Matrix3x2F--Klasse skalieren. Um ein Objekt zu skalieren, bedeutet dies, dass das Objekt größer oder kleiner wird. Sie können eine der folgenden beiden Methoden aufrufen, um ein Objekt zu skalieren.
- Matrix3x2F::Scale(D2D1_SIZE_F scalefactor, D2D1_POINT_2F centerpoint)
- Matrix3x2F::Scale(float scalex, float scaley, D2D1_POINT_2F centerpoint)
Die erste Methode speichert scalex und scaley als geordnetes Paar von Gleitkommawerten in der Struktur D2D1_SIZE_F . Die zweite Methode definiert Scalex und Scaley als individuelle Parameter.
Unabhängig davon, welche Methode Sie verwenden, müssen Sie sowohl die Scalex-- als auch die Scaley--Faktoren angeben. Der Wert scalex ist der Skalierungsfaktor in x-Richtung. Beispielsweise dehnt sich ein scalex--Wert von 1,5 das Objekt auf 150 % entlang der x-Achse aus. In ähnlicher Weise ist der Wert scaley der Skalierungsfaktor in y-Richtung. Ein skalierter Wert von 0,5 verkleinert beispielsweise die Höhe des Objekts um 50 Prozent entlang der y-Achse.
Um einen Punkt als Mittelpunkt des Skalierungsvorgangs anzugeben, verwenden Sie den Centerpoint Parameter. Standardmäßig wird ein Objekt um seinen Ursprung zentriert (0,0).
Im folgenden Beispielcode wird eine Skalierungstransformation erstellt, um die Größe eines Quadrats auf 130% seiner ursprünglichen Größe zu erhöhen. Der Mittelpunkt wird auf die linke obere Ecke des ursprünglichen Quadrats gesetzt.
// 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 der Anwendung der Skalierungstransformation auf das Quadrat. Das ursprüngliche Quadrat ist ein gepunkteter Umriss und das skalierte Quadrat ist ein durchgezogener Umriss.

Verwandte Themen