ID2D1Factory::CreateTransformedGeometry (ID2D1Geometry*,constD2D1_MATRIX_3X2_F*,ID2D1TransformedGeometry**) 方法 (d2d1.h)

转换指定的几何图形,并将结果存储为 ID2D1TransformedGeometry 对象。

语法

HRESULT CreateTransformedGeometry(
  ID2D1Geometry            *sourceGeometry,
  const D2D1_MATRIX_3X2_F  *transform,
  ID2D1TransformedGeometry **transformedGeometry
);

参数

sourceGeometry

类型:[in] ID2D1Geometry*

要转换的几何图形。

transform

类型:[in] const D2D1_MATRIX_3X2_F*

要应用的转换。

transformedGeometry

类型:[out] ID2D1TransformedGeometry**

此方法返回时,包含指向新转换的 geometry 对象的指针的地址。 转换后的几何图形存储通过转换转换 sourceGeometry 的结果。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,它将返回 HRESULT 错误代码。

注解

与其他资源一样,转换后的几何图形继承创建它的工厂的资源空间和线程策略。 此对象是不可变的。

使用 DrawGeometry 方法抚摸转换后的几何图形时,笔划宽度不受应用于该几何图形的转换的影响。 笔划宽度仅受世界变换的影响。

示例

以下示例创建 ID2D1RectangleGeometry,然后绘制该 ID2D1RectangleGeometry,而不对其进行转换。 它生成如下图所示的输出。

矩形图示
hr = m_pD2DFactory->CreateRectangleGeometry(
    D2D1::RectF(150.f, 150.f, 200.f, 200.f),
    &m_pRectangleGeometry
    );

下一个示例使用呈现器目标将几何图形缩放为 3,然后绘制它。 下图显示了使用 转换绘制矩形的结果,请注意,转换后笔划较粗,即使笔划粗细为 1。

较大矩形内具有较粗笔划的较小矩形的插图
// Transform the render target, then draw the rectangle geometry again.
m_pRenderTarget->SetTransform(
    D2D1::Matrix3x2F::Scale(
        D2D1::SizeF(3.f, 3.f),
        D2D1::Point2F(175.f, 175.f))
    );

m_pRenderTarget->DrawGeometry(m_pRectangleGeometry, m_pBlackBrush, 1);

下一个示例使用 CreateTransformedGeometry 方法将几何图形缩放为 3,然后对其进行绘制。 它生成如下图所示的输出。 请注意,尽管矩形较大,但其笔划没有增加。

具有相同笔划的大矩形内的较小矩形的插图
 // Create a geometry that is a scaled version
 // of m_pRectangleGeometry.
 // The new geometry is scaled by a factory of 3
 // from the center of the geometry, (35, 35).

 hr = m_pD2DFactory->CreateTransformedGeometry(
     m_pRectangleGeometry,
     D2D1::Matrix3x2F::Scale(
         D2D1::SizeF(3.f, 3.f),
         D2D1::Point2F(175.f, 175.f)),
     &m_pTransformedGeometry
     );
// Replace the previous render target transform.
m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());

// Draw the transformed geometry.
m_pRenderTarget->DrawGeometry(m_pTransformedGeometry, m_pBlackBrush, 1);

要求

要求
目标平台 Windows
标头 d2d1.h
Library D2d1.lib
DLL D2d1.dll

另请参阅

ID2D1Factory

ID2D1TransformedGeometry