ID2D1SpriteBatch::AddSprites 方法 (d2d1_3.h)

将给定的子画面添加到此子画面批处理的末尾。

语法

HRESULT AddSprites(
                 UINT32                  spriteCount,
  [in]           const D2D1_RECT_F       *destinationRectangles,
  [in, optional] const D2D1_RECT_U       *sourceRectangles,
  [in, optional] const D2D1_COLOR_F      *colors,
  [in, optional] const D2D1_MATRIX_3X2_F *transforms,
                 UINT32                  destinationRectanglesStride,
                 UINT32                  sourceRectanglesStride,
                 UINT32                  colorsStride,
                 UINT32                  transformsStride
);

参数

spriteCount

类型: UINT32

要添加的子画面数。 这决定了 Direct2D 将读取每个给定数组的步长数。

[in] destinationRectangles

类型: const D2D1_RECT_F*

指向包含目标矩形的数组的指针,指定在目标设备上下文中绘制子画面的位置。

[in, optional] sourceRectangles

类型: const D2D1_RECT_U*

指向包含源矩形的数组的指针,该矩形指定要绘制为子画面的源位图的区域。 Direct2D 将整个源位图用于分配给 null 值或 InfiniteRectU 的子画面。 如果此参数完全省略或设置为 null 值,则 Direct2D 将对所有添加的子画面使用整个源位图。

[in, optional] colors

类型: const D2D1_COLOR_F*

指向数组的指针,其中包含要应用于每个子画面的颜色。 输出颜色是源位图颜色和所提供的颜色的分量乘法的结果。 输出颜色未固定。

Direct2D 不会更改分配有 null 值的子画面的颜色。 如果此参数完全省略或设置为 null 值,则 Direct2D 不会更改任何添加的子画面的颜色。

[in, optional] transforms

类型: const D2D1_MATRIX_3X2_F*

指向数组的指针,其中包含要应用于每个子画面的目标矩形的转换。

Direct2D 不会转换分配给 null 值的任何子画面的目标矩形。 如果此参数完全省略或设置为 null 值,则 Direct2D 不会转换任何添加的子画面的目标矩形。

destinationRectanglesStride

类型: UINT32

指定 destinationRectangles 数组中每个矩形之间的距离(以字节为单位)。 如果提供步幅 0,则将对每个添加的子画面使用相同的目标矩形。

sourceRectanglesStride

类型: UINT32

指定 sourceRectangles 数组中每个矩形 (之间的距离(以字节为单位),前提是该数组) 。 如果提供步幅 0,则将对每个添加的子画面使用相同的源矩形。

colorsStride

类型: UINT32

指定颜色数组 (中每种颜色之间的距离(以字节为单位),前提是该数组) 。 如果提供步幅为 0,则每个添加的子画面将使用相同的颜色。

transformsStride

类型: UINT32

指定转换数组中每个转换 (之间的距离(以字节为单位),前提是该数组) 。 如果提供步幅 0,则将对每个添加的子画面使用相同的转换。

返回值

类型: HRESULT

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

注解

在 Direct2D 中,子画面由四个属性定义:目标矩形、源矩形、颜色和转换。 目标矩形是必需的,但其余属性是可选的。

注意 对于不希望使用的属性,始终省略或传递 null 值。 这允许 Direct2D 避免存储这些属性的值,并完全跳过其处理,从而提高绘制速度。 例如,假设你有一批 500 个子画面,并且你不希望转换其任何目标矩形。 与其传递标识矩阵的数组,不如省略转换参数。 这允许 Direct2D 避免存储任何转换,并产生最快的绘制性能。 另一方面,如果批处理中的任何子画面为属性设置了任何值,则 Direct2D 必须在内部为该属性数组分配空间,并为该属性 (为每个子画面分配一个值,即使它只是默认值) 。
 

要求

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

另请参阅

ID2D1SpriteBatch