Atlas 效果
可以使用此效果输出图像的一部分,但保留该部分之外的区域以供后续作使用。
此效果的 CLSID CLSID_D2D1Atlas。
如果要加载由许多较小图像组成的大型图像(例如子画面的各个帧),则图集效果非常有用。
若要创建输出,效果:
- 将输入裁剪到给定 InputRect 属性。
- 将结果的来源转换为 (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 |