So wird's machen, wie ein Objekt gedreht wird

Um ein Objekt zu verzerren (oder verdrehen), bedeutet es, ein Objekt durch einen angegebenen Winkel aus der x-Achse, der y-Achse oder beides zu verzerren. Wenn Sie beispielsweise ein Quadrat neigen, wird es zu einem Parallelogramm.

Die Matrix3x2F::Skew-Methode verwendet 3 Parameter:

  • angleX: Der x-Achsen-Schrägwinkel, der in Grad gegen den Uhrzeigersinn von der y-Achse gemessen wird.
  • angleY: Der Y-Achsen-Schrägwinkel, der im Uhrzeigersinn von der X-Achse gemessen wird.
  • CenterPoint: Der Punkt, an dem die Neigung ausgeführt wird.

Um die Wirkung einer schrägen Transformation vorherzusagen, sollten Sie berücksichtigen, dass WinkelX der schräge Winkel ist, der in Grad im Gegenzeigersinn von der y-Achse gemessen wird. Wenn z. B. WinkelX auf 30 festgelegt ist, wird das Objekt 30 Grad im Gegenzeigersinn entlang der y-Achse über den zentrierten Punkt verdreht. Die folgende Abbildung zeigt eine quadratische Neigung horizontal 30 Grad über die obere linke Ecke des Quadrats.

illustration of a square skewed 30 degrees counterclockwise from the y-axis

Ähnlich ist AngleY ein schräger Winkel, der im Uhrzeigersinn von der X-Achse gemessen wird. Wenn beispielsweise winkelY auf 30 festgelegt ist, wird das Objekt auf 30 Grad uhrzeiger weise entlang der x-Achse über den CenterPoint gedreht. Die folgende Abbildung zeigt eine quadratische Verschiebung vertikal 30 Grad über die obere linke Ecke des Quadrats.

illustration of a square skewed 30 degrees clockwise from the x-axis

Wenn Sie sowohl WinkelX als auch WinkelY auf 30 Grad festlegen, und die MittePoint auf die obere linke Ecke des Quadrats wird das folgende schräge Quadrat (solide Gliederung) angezeigt. Beachten Sie, dass das schräge Quadrat 30 Grad gegen den Uhrzeigersinn von der y-Achse und 30 Grad Uhrzeigersinn aus der x-Achse gedreht wird.

illustration of a square skewed 30 degrees counterclockwise from the y-axis and 30 degrees clockwise from the x-axis

Im folgenden Codebeispiel wird die quadratische 45 Grad horizontal über die obere linke Ecke des Quadrats verschoben.

    // 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);

Die folgende Abbildung zeigt den Effekt, die Neigungstransformation auf das Quadrat anzuwenden, wobei das ursprüngliche Quadrat eine gepunktete Gliederung ist und das schräge Objekt (Parallelogramm) eine solide Gliederung ist. Beachten Sie, dass der schräge Winkel 45 Grad gegen den Uhrzeigersinn von der y-Achse ist.

illustration of a square skewed 45 degrees counterclockwise from the y-axis

Übersicht über Direct2D-Transformationen

Direct2D-Referenz