形态效果

使用形态效果在图像中细化或加厚边缘边界。 此效果将创建一个内核,该内核是指定的 Width 和 Height 值的 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 之间(含)。
高度
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(-Width) * (用户 DPI) / 96)
输出位图增长 Y = INT(FLOAT(-Height) * (用户 DPI) / 96)

要求

要求 价值
支持的最低客户端 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用]
支持的最低服务器 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用]
页眉 d2d1effects.h
图书馆 d2d1.lib、dxguid.lib

ID2D1Effect