Эффект карты смещения
Используйте эффект карты смещения, чтобы сместить пиксели входного изображения на значения интенсивности второго входного изображения.
CLSID для этого эффекта CLSID_D2D1DisplacementMap.
- Пример изображения
- Свойства эффекта
- Цветовые каналы
- Выходное растровое изображение
- Requirements
- Связанные темы
Пример изображения
До |
---|
После |
ComPtr<ID2D1Effect> displacementMapEffect;
m_d2dContext->CreateEffect(CLSID_D2D1DisplacementMap, &displacementMapEffect);
displacementMapEffect->SetInput(0, bitmap);
displacementMapEffect->SetValue(D2D1_DISPLACEMENTMAP_PROP_SCALE, 100.0f);
// The second input of the displacement effect determines how the input image is transformed.
// For this example, we will use a turbulence effect as the second input to randomly distort the image.
ComPtr<ID2D1Effect> turbulenceEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Turbulence, &turbulenceEffect);
displacementMapEffect->SetInputEffect(1, turbulenceEffect.Get());
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(displacementMapEffect.Get());
m_d2dContext->EndDraw();
Расположение пикселей в выходных данных определяется с помощью следующей формулы:
C' (x,y)=C(x+ scale*(XChannelSelector(Растровая карта смещения (x,y))-0,5),y+ scale*(YChannelSelector(Точечный рисунок смещения (x,y))-0,5))
Где:
-
C (x, y) — выходной пиксель в (x, y).
C (x, y) — это входной пиксель в (x, y).
Растровое изображение смещения (x, y) — это интенсивность смещения пикселей в указанных координатах.
XChannelSelector интенсивность выбранного канала RGBA из растрового изображения смещения, которое вытесняет входное изображение в направлении X.
YChannelSelector интенсивность выбранного канала RGBA из растрового изображения смещения, которое вытесняет входное изображение в направлении Y.
Эффект перенастраивать входное изображение в соответствии со свойством scale и интенсивностью изображения смещения. Он использует билинейную интерполяцию при выборке из между пикселями входного изображения.
Этот эффект работает с прямыми и предварительно настроенными альфа-изображениями. Альфа-формат выходных данных совпадает с форматом входных данных.
Свойства эффекта
Отображаемое перечисление имен и индексов | Тип и значение по умолчанию | Описание |
---|---|---|
Масштабирование D2D1_DISPLACEMENTMAP_PROP_SCALE |
FLOAT 0.0f |
Умножает интенсивность выбранного канала из изображения смещения. Чем выше задано это свойство, тем больше эффект вытесняет пиксели |
XChannelSelect D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Эффект извлекает интенсивность из этого цветового канала и использует его для пространственного смещения изображения в направлении X. Дополнительные сведения см. в разделе Цветовые каналы . |
YChannelSelect D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Эффект извлекает интенсивность из этого цветового канала и использует его для пространственного смещения изображения в направлении Y. Дополнительные сведения см. в разделе Цветовые каналы . |
Цветовые каналы
Перечисление | Описание |
---|---|
D2D1_CHANNEL_SELECTOR_R | Эффект извлекает выходные данные интенсивности из красного канала. |
D2D1_CHANNEL_SELECTOR_G | Эффект извлекает выходные данные интенсивности из зеленого канала. |
D2D1_CHANNEL_SELECTOR_B | Эффект извлекает выходные данные интенсивности из синего канала. |
D2D1_CHANNEL_SELECTOR_A | Эффект извлекает выходные данные интенсивности из альфа-канала. |
Выходное растровое изображение
Определить максимальный размер выходного растрового рисунка можно с помощью следующих уравнений:
Выходное растровое изображение? Pixels=(Input Bitmap Size?( DIPs)+Scale)*(User DPI/96)
Выходное растровое изображениеy Pixels=(Input Bitmap Sizey(DIP) + Scale)*(User DPI/96)
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальная версия сервера | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |