オブジェクトをスケーリングする方法
このトピックでは、 Matrix3x2F クラスを使用してオブジェクトをスケーリングする方法について説明します。 オブジェクトをスケーリングするには、オブジェクトを大きくまたは小さくすることを意味します。 次の 2 つのメソッドのいずれかを呼び出して、オブジェクトをスケーリングできます。
- Matrix3x2F::Scale(D2D1_SIZE_F scalefactor, D2D1_POINT_2F centerpoint)
- Matrix3x2F::Scale(float scalex, float scaley, D2D1_POINT_2F centerpoint)
最初のメソッドは、 scalex と scaley を、 D2D1_SIZE_F 構造体の浮動小数点値の順序付きペアとして格納します。 2 番目のメソッドは、 scalex と scaley を個々の パラメーターとして定義します。
使用する方法に関係なく、 scalex と scaley の両方の要因を 指定する必要があります。 scalex 値は、x 方向のスケール係数です。 たとえば、 scalex 値が 1.5 の場合、オブジェクトは x 軸に沿って 150% に拡大されます。 同様に、 スケール 値は y 方向のスケール係数です。 たとえば、 スケール 値が 0.5 の場合、オブジェクトの高さが y 軸に沿って 50% 縮小されます。
スケーリング操作の中心としてポイントを指定するには、 centerpoint パラメーターを使用します。 既定では、オブジェクトは原点 (0,0) の中心に配置されます。
次のコード例では、正方形のサイズを元のサイズの 130% に増やすスケール変換を作成します。 中心点は、元の四角形の左上隅に設定されます。
// 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);
次の図は、四角形にスケール変換を適用する効果を示しています。 元の四角形は点線のアウトラインで、拡大縮小された四角形は実線の輪郭です。
関連トピック