ID2D1Brush::SetTransform (constD2D1_MATRIX_3X2_F&) 方法 (d2d1.h)

设置应用于画笔的转换。

语法

void SetTransform(
  [ref] const D2D1_MATRIX_3X2_F & transform
);

参数

[ref] transform

类型: const D2D1_MATRIX_3X2_F

要应用于此画笔的转换。

返回值

备注

使用画笔绘制时,它会在呈现目标的坐标空间中绘制。 画笔不会自动定位自身以与正在绘制的对象对齐;默认情况下,它们开始在呈现目标 (0, 0) 的原点进行绘制。

可以通过设置 ID2D1LinearGradientBrush 定义的渐变“移动”到目标区域。 同样,可以通过更改 ID2D1RadialGradientBrush 定义的渐变的中心和半径来移动该渐变。

若要将 ID2D1BitmapBrush 的内容与要绘制的区域对齐,可以使用 SetTransform 方法将位图转换为所需位置。 此转换仅影响画笔;它不会影响呈现器目标绘制的任何其他内容。

下图显示了使用 ID2D1BitmapBrush 填充位于 (100, 100) 的矩形的效果。 左侧插图显示了在不转换画笔的情况下填充矩形的结果:位图绘制在呈现目标的原点处。 因此,矩形中只显示一部分位图。

右侧的插图显示了转换 ID2D1BitmapBrush 的结果,以便其内容向右移动 50 像素,向下移动 50 像素。 位图现在填充矩形。

两个正方形的插图,一个用没有转换画笔的位图绘制,一个用转换后的画笔绘制

示例

以下代码示例演示如何创建上图右图中显示的转换。 首先对 ID2D1BitmapBrush 应用平移,沿 x 轴向右移动画笔 50 像素,沿 y 轴向下移动 50 像素。 然后使用 ID2D1BitmapBrush 填充左上角位于 (100,100) ,右下角位于 (200, 200) 的矩形。

// Create the bitmap to be used by the bitmap brush.
if (SUCCEEDED(hr))
{
    hr = LoadResourceBitmap(
        m_pRenderTarget,
        m_pWICFactory,
        L"FERN",
        L"Image",
        &m_pBitmap
        );
   
}

if (SUCCEEDED(hr))
{
    hr = m_pRenderTarget->CreateBitmapBrush(
        m_pBitmap,
        &m_pBitmapBrush
        );
}

D2D1_RECT_F rcTransformedBrushRect = D2D1::RectF(100, 100, 200, 200);


 // Demonstrate the effect of transforming a bitmap brush.
 m_pBitmapBrush->SetTransform(
     D2D1::Matrix3x2F::Translation(D2D1::SizeF(50,50))
     );

 // To see the content of the rcTransformedBrushRect, comment
 // out this statement.
 m_pRenderTarget->FillRectangle(
     &rcTransformedBrushRect, 
     m_pBitmapBrush
     );

 m_pRenderTarget->DrawRectangle(rcTransformedBrushRect, m_pBlackBrush, 1, NULL);

要求

要求
最低受支持的客户端 Windows 7、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用]
目标平台 Windows
标头 d2d1.h
Library D2d1.lib
DLL D2d1.dll

另请参阅

画笔概述

ID2D1Brush