形态效果

使用形态效果在图像中细化或加厚边缘的边界。 此效果将创建一个宽度和高度为指定值 2 倍的内核。 此效果使内核在它正在计算的像素上居中,并返回内核中的最大值(如果膨胀)或内核中的最小值(如果侵蚀)。

此效果的 CLSID 是 CLSID_D2D1Morphology。

示例图

此示例显示使用侵蚀模式时该效果的输出。

之前
应用效果前的图像。
之后
应用转换后的图像。
ComPtr<ID2D1Effect> morphologyEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Morphology, &morphologyEffect);

morphologyEffect->SetInput(0, bitmap);

morphologyEffect->SetValue(D2D1_MORPHOLOGY_PROP_MODE, D2D1_MORPHOLOGY_MODE_ERODE);
morphologyEffect->SetValue(D2D1_MORPHOLOGY_PROP_WIDTH, 14);

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

效果属性

显示名称和索引枚举 类型和默认值 说明
“模式”
D2D1_MORPHOLOGY_PROP_MODE
D2D1_MORPHOLOGY_MODE
D2D1_MORPHOLOGY_MODE_ERODE
形态模式。 可用模式为侵蚀(平展)和膨胀(变厚)。
有关详细信息,请参阅形态模式
宽度
D2D1_MORPHOLOGY_PROP_WIDTH
UINT
1
X 方向的内核大小。 这些单元以 DIP 为单位。 值必须介于 1 到 100 之间(均含)。
Height
D2D1_MORPHOLOGY_PROP_HEIGHT
UINT
1
Y 方向的内核大小。 这些单元以 DIP 为单位。 值必须介于 1 到 100 之间(均含)。

形态模式

名称 描述
D2D1_MORPHOLOGY_MODE_ERODE 使用内核中每个 RGB 通道的最小值。
D2D1_MORPHOLOGY_MODE_DILATE 使用内核中每个 RGB 通道的最大值。

输出位图

对于 DILATE 模式,输出位图尺寸增大:

要求
输出位图增长 X = INT(FLOAT(宽度) * ((用户 DPI) / 96))
输出位图增长 Y = INT(FLOAT(高度) * ((用户 DPI) / 96))

对于 ERODE 模式,输出位图尺寸缩小:

要求
输出位图增长 X = INT(FLOAT(-宽度) * ((用户 DPI) / 96))
输出位图增长 Y = INT(FLOAT(-高度) * ((用户 DPI) / 96))

要求

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

ID2D1Effect