形态效果
使用形态效果在图像中细化或加厚边缘的边界。 此效果将创建一个宽度和高度为指定值 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 |