オブジェクトを回転させる方法

このトピックでは、指定した点を中心にオブジェクトを回転させる方法について説明します。 オブジェクトを回転するには、 Matrix3x2F::Rotation メソッドを呼び出します。 このメソッドは、指定された角度と中心点の 2 つのパラメーターを受け取ります。 角度は時計回りの回転角度 (度単位) で、中心点はオブジェクトが回転する点です。 中心点は、変換されるオブジェクトの座標系で表されます。

たとえば、次のコードでは、四角形の中心を中心に時計回りに 45 度回転します。

    // Create a rectangle.
    D2D1_RECT_F rectangle = D2D1::Rect(438.0f, 301.5f, 498.0f, 361.5f);

    // Draw the rectangle.
    m_pRenderTarget->DrawRectangle(
        rectangle,
        m_pOriginalShapeBrush,
        1.0f,
        m_pStrokeStyleDash
        );

    // Apply the rotation transform to the render target.
    m_pRenderTarget->SetTransform(
        D2D1::Matrix3x2F::Rotation(
            45.0f,
            D2D1::Point2F(468.0f, 331.5f))
        );

    // Fill the rectangle.
    m_pRenderTarget->FillRectangle(rectangle, m_pFillBrush);

    // Draw the transformed rectangle.
    m_pRenderTarget->DrawRectangle(rectangle, m_pTransformedShapeBrush);

次の図は、前の回転変換を正方形に適用した場合の効果を示しています。 元の四角形は点線で、回転した四角形は実線の輪郭です。

元の四角形の中心を中心に時計回りに 45 度回転した四角形の図

次の図は、異なる中心点について同じ角度で回転する効果を示しています。 回転したオブジェクトは、元のオブジェクトに対して異なる位置に配置されていることに注意してください。 左の四角形は、元の四角形の中心を中心に回転した結果で、右側の四角形は元の四角形の左上隅を中心に回転した結果です。

異なる中心点について時計回りに 45 度回転した四角形の図

Direct2D リファレンス

Direct2D 変換の概要