排量地图效果

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

此效果的 CLSID CLSID_D2D1DisplacementMap。

示例图

之前
the image before the effect.
之后
the image after the transform.
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 通道中提取强度输出。

输出位图

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

输出位图? Pixel= (输入位图大小? (DIP) +Scale) * (User DPI/96)

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

要求

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

ID2D1Effect