Atlas 效果

可以使用此效果输出图像的一部分,但保留该部分之外的区域以供后续操作使用。

此效果的 CLSID 是CLSID_D2D1Atlas。

如果要加载由许多较小图像组成的大图像,例如子画面的各种帧,则 atlas 效果非常有用。

若要创建输出效果,请:

  1. 将输入裁剪到给定的 InputRect 属性。
  2. 将结果的原点转换为 (0,0) 。

注意

仅当并且仅当两个矩形之间的像素在输入上为透明黑色时, InputPaddingRect 属性才应更大。 这可能会导致 Direct2D 更优化地执行图形。

下面是效果的示例。 此图像小而简单,用于说明目的。

输入图像。

上图是效果的输入。 此处的代码创建图集效果、设置输入、设置输入矩形,然后绘制输出。

ComPtr<ID2D1Effect> atlasEffect;

// Create the Atlas Effect.
DX::ThrowIfFailed(m_d2dContext->CreateEffect(CLSID_D2D1Atlas, &atlasEffect));

// Set the input.
atlasEffect->SetInputEffect(0, inputImage.Get());

// The images here are 150 x 150 pixels.
float size = 150.0f;

// Compensate for the padding between images.
float padding = 10.0f;

// The input rectangle.  150 x 150 pixels with 10 pixel padding
D2D1_Vector_4F inputRect = D2D1::Vector4F(size + (padding * 2), padding, size, size);

DX::ThrowIfFailed(atlasEffect->SetValue(D2D1_ATLAS_PROP_INPUT_RECT, inputRect));

// Draw the image
m_d2dContext->DrawImage(atlasEffect.Get());

前面的代码选择围绕第二个三角形的矩形。 忽略它周围的填充。 下面是生成的图像。

输出图像。

注意

在这种情况下,你可以选择指定 InputPaddingRect ,因为填充是透明的黑色。 矩形为 D2D1::Vector4F(size + (padding * 2), 0, size + padding, size + padding);

效果属性

显示名称和索引枚举 说明
InputRect
D2D1_ATLAS_PROP_INPUT_RECT
传递给下一个效果的图像部分。
类型为D2D1_VECTOR_4F。
默认值为 (-FLT_MAX、-FLT_MAX、FLT_MAX FLT_MAX) 。
InputPaddingRect
D2D1_ATLAS_PROP_INPUT_PADDING_RECT
为输出矩形采样的最大大小。
类型为D2D1_VECTOR_4F。
默认值为 (-FLT_MAX、-FLT_MAX、FLT_MAX FLT_MAX) 。

要求

要求
最低受支持的客户端 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用]
最低受支持的服务器 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用]
标头 d2d1effects.h
d2d1.lib、dxguid.lib

ID2D1Effect