如何缩放对象

本主题介绍如何使用 Matrix3x2F 类缩放对象。 缩放对象意味着使对象更大或更小。 可以调用以下两种方法之一来缩放对象。

  • Matrix3x2F::Scale (D2D1_SIZE_F缩放因子,D2D1_POINT_2F中心点)
  • Matrix3x2F::Scale (float scalex,float scaley,D2D1_POINT_2F中心点)

第一种方法将 scalexscaley 存储为 D2D1_SIZE_F 结构中的一对有序的浮点值。 第二种方法将 scalexscaley 定义为单个参数。

无论使用哪种方法,都必须同时指定 scalexscaley 因子。 刻度值是 x 方向的比例因子。 例如, 刻度值为 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);

下图显示了将缩放转换应用到正方形的效果。 原始正方形是虚线轮廓,而缩放的正方形是实心轮廓。

正方形的插图已调整为原始大小的 130%

Direct2D 转换概述

Direct2D 参考