排量地图效果

使用位移贴图效果将输入图像的像素替换为第二个输入图像的强度值。

此效果的 CLSID 是CLSID_D2D1DisplacementMap。

示例图

之前
效果前的图像。
之后
转换后的图像。
ComPtr<ID2D1Effect> displacementMapEffect;
m_d2dContext->CreateEffect(CLSID_D2D1DisplacementMap, &displacementMapEffect);

displacementMapEffect->SetInput(0, bitmap);
displacementMapEffect->SetValue(D2D1_DISPLACEMENTMAP_PROP_SCALE, 100.0f);

// The second input of the displacement effect determines how the input image is transformed.
// For this example, we will use a turbulence effect as the second input to randomly distort the image.
ComPtr<ID2D1Effect> turbulenceEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Turbulence, &turbulenceEffect);
displacementMapEffect->SetInputEffect(1, turbulenceEffect.Get());

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

输出中像素的位置使用以下公式确定:

C' (x,y) =C (x+ scale* (XChannelSelector (位移位图 (x,y) ) -0.5 () ,y+ scale* (YChannelSelector (位移位图 (x,y) ) -0.5) )

其中:

C (x、y) 是 (x、y) 处的输出像素。
C (x、y) 是 (x、y) 处的输入像素。
位移位图 (x,y) 是指定坐标处的位移像素强度
XChannelSelector 是所选 RGBA 通道的强度,该位移位图使输入图像在 X 方向上偏移。
YChannelSelector 所选 RGBA 通道的强度,该位图在 Y 方向上替换输入图像。

该效果根据比例属性和位移图像的强度重新采样输入图像。 如果从输入图像中的像素之间采样,则使用双线性内插。

此效果适用于直的和预乘的 alpha 图像。 输出 alpha 格式与输入格式相同。

效果属性

显示名称和索引枚举 类型和默认值 说明
缩放
D2D1_DISPLACEMENTMAP_PROP_SCALE
FLOAT
0.0f
将所选通道的强度与位移图像相乘。 设置此属性越高,效果置换像素越多
XChannelSelect
D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_A
该效果从此颜色通道中提取强度,并使用它在 X 方向上对图像进行空间置换。 有关详细信息 ,请参阅颜色通道
YChannelSelect
D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_A
该效果从此颜色通道中提取强度,并使用它在 Y 方向上对图像进行空间置换。 有关详细信息 ,请参阅颜色通道

颜色通道

枚举 描述
D2D1_CHANNEL_SELECTOR_R 该效果从红色通道中提取强度输出。
D2D1_CHANNEL_SELECTOR_G 该效果从绿色通道中提取强度输出。
D2D1_CHANNEL_SELECTOR_B 该效果从蓝色通道中提取强度输出。
D2D1_CHANNEL_SELECTOR_A 该效果从 alpha 通道中提取强度输出。

输出位图

可以使用以下公式确定输出位图的最大大小:

输出位图? Pixels= (输入位图大小? (DIP) +缩放) * (用户 DPI/96)

输出位图y 像素= (输入位图大小y (DIP) + 缩放) * (用户 DPI/96)

要求

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

ID2D1Effect