Поделиться через


Эффект морфологии

Используйте эффект морфологии для тонких или толстых границ края на изображении. Этот эффект создает ядро, которое составляет 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(); 

Свойства эффекта

Отображаемое имя и перечисление индексов Тип и значение по умолчанию Description
Режим
D2D1_MORPHOLOGY_PROP_MODE
D2D1_MORPHOLOGY_MODE
D2D1_MORPHOLOGY_MODE_ERODE
Режим морфологии. Доступные режимы : erode (плоский) и дилат (утолщение).
Дополнительные сведения см . в режимах морфологии.
Width
D2D1_MORPHOLOGY_PROP_WIDTH
UINT
1
Размер ядра в направлении X. Единицы находятся в dips. Значения должны составлять от 1 до 100 включительно.
Height
D2D1_MORPHOLOGY_PROP_HEIGHT
UINT
1
Размер ядра в направлении Y. Единицы находятся в dips. Значения должны составлять от 1 до 100 включительно.

Режимы морфологии

Имя Описание
D2D1_MORPHOLOGY_MODE_ERODE Используется минимальное значение каждого канала RGB в ядре.
D2D1_MORPHOLOGY_MODE_DILATE Используется максимальное значение каждого канала RGB в ядре.

Выходной растровый рисунок

В режиме DILATE размер битового изображения вывода увеличивается:

Требование Значение
Рост растрового изображения выходных данных X = INT(FLOAT(Width) * ((User DPI) / 96))
Рост растрового изображения выходных данных = INT(FLOAT(Height) * ((User DPI) / 96))

Для режима ERODE размер битового изображения выходных данных уменьшается:

Требование Значение
Рост растрового изображения выходных данных X = INT(FLOAT(-Width) * ((User DPI) / 96))
Рост растрового изображения выходных данных = INT(FLOAT(-Height) * ((User DPI) / 96))

Требования

Требование Значение
Минимальная версия клиента Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Минимальная версия сервера Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Верхний колонтитул d2d1effects.h
Библиотека d2d1.lib, dxguid.lib

ID2D1Effect