形态效果
使用形态效果在图像中细化或加厚边缘边界。 此效果将创建一个内核,该内核是指定的 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 |