复合效果

使用复合效果合并 2 个或多个图像。 此效果具有 13 种不同的复合模式。 T

复合效果接受 2 个或多个输入。 指定 2 个图像时,目标为第一个输入 (索引 0) ,源是第二个输入 (索引 1) 。 如果指定了 2 个以上的输入,则从第一个输入和第二个输入开始,图像将组合在一起。

此效果使用图形处理单元的混合单元 (GPU) 实现所有模式。

此效果的 CLSID CLSID_D2D1Composite。

示例图

此处的图像显示了两个具有相同大小的圆角矩形。 蓝色矩形是源,红色矩形是目标。 图像是使用源过度模式组合的。

an example image showing 2 rounded rectangles of the same size that overlap using the source over mode.

下面是使用默认模式的另一个示例。

图像 1 之前
the first source image before the effect.
图像 2 之前
the second image before the effect.
之后
the image after the transform.
ComPtr<ID2D1Effect> compositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Composite, &compositeEffect);

compositeEffect->SetInput(0, bitmap);
compositeEffect->SetInput(1, bitmapTwo);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(compositeEffect.Get());
m_d2dContext->EndDraw();

效果属性

显示名称和索引枚举 类型和默认值 说明
“模式”
D2D1_COMPOSITE_PROP_MODE
D2D1_COMPOSITE_MODE
D2D1_COMPOSITE_MODE_SOURCE_OVER
用于效果的模式。

模式类型

此处的表显示了此效果的模式。 表中列出的公式使用以下元素:

  • O = 输出
  • S = 源
  • SA = 源 Alpha
  • D = 目标
  • DA = 目标 Alpha
枚举 方程 输出位图大小
D2D1_COMPOSITE_MODE_SOURCE_OVER O = S + (1 SA) * D 源位图和目标位图的联合
D2D1_COMPOSITE_MODE_DESTINATION_OVER O = (1 DA) * S + D 源位图和目标位图的联合
D2D1_COMPOSITE_MODE_SOURCE_IN O = DA * S 源位图和目标位图的交集
D2D1_COMPOSITE_MODE_DESTINATION_IN O = SA * D 源位图和目标位图的交集
D2D1_COMPOSITE_MODE_SOURCE_OUT O = (1 - DA) * S 源位图的区域
D2D1_COMPOSITE_MODE_DESTINATION_OUT O = (1 - SA) * D 目标位图的区域
D2D1_COMPOSITE_MODE_SOURCE_ATOP O = DA * S + (1 - SA) * D 目标位图的区域
D2D1_COMPOSITE_MODE_DESTINATION_ATOP O = (1 - DA) * S + SA * D 源位图的区域
D2D1_COMPOSITE_MODE_XOR O = (1 - DA) * S + (1 - SA) * D 源位图和目标位图的联合
D2D1_COMPOSITE_MODE_PLUS O = S + D 源位图和目标位图的联合
D2D1_COMPOSITE_MODE_SOURCE_COPY O = S 源位图的区域
D2D1_COMPOSITE_MODE_BOUNDED_SOURCE_COPY O = S (仅存在源) 源位图和目标位图的联合。 目标不会覆盖源不存在的位置。
D2D1_COMPOSITE_MODE_MASK_INVERT O = (1 D) * S + (1 SA) * D 源位图和目标位图的联合。alpha 值保持不变。

下图显示了具有不透明度为 1.0 或 0.5 的图像的每个模式的示例。

an example image of each of the modes with opacity set to 1.0 or 0.5.

代码示例

有关此效果的示例,请下载 Direct2D 复合效果模式示例

要求

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

ID2D1Effect