Эффект карты смещения
Используйте эффект карты смещения для перемещения пикселей входного изображения значениями интенсивности второго входного изображения.
CLSID для этого эффекта CLSID_D2D1DisplacementMap.
- пример изображения
- свойства эффекта
- цветовые каналы
- выходных данных
- требования
- связанные разделы
Пример изображения
Перед |
---|
![]() |
После |
![]() |
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(shift Bitmap (x,y)-0,5),y+ scale*(YChannelSelector(Shift Bitmap (x,y)-0.5))
Где:
-
C (x, y) — это пиксель вывода (x, y).
C (x, y) — это пиксель ввода (x, y).
растровое изображение смещения (x, y) — это интенсивность смещения пикселей по указанным координатам.
XChannelSelector интенсивность выбранного канала RGBA из растрового изображения перемещения, которое перемещает входное изображение в направлении X.
YChannelSelector интенсивность выбранного канала RGBA из растрового изображения перемещения, которое перемещает входное изображение в направлении Y.
Эффект изменяет входное изображение в соответствии со свойством масштабирования и интенсивностью изображения смещения. При выборке между пикселями в входном изображении используется двулинейная интерполяция.
Этот эффект работает на прямых и предварительно премультированных альфа-изображениях. Выходной альфа-формат совпадает с форматом входных данных.
Свойства эффекта
Цветовые каналы
Перечисление | Описание |
---|---|
D2D1_CHANNEL_SELECTOR_R | Эффект извлекает выходные данные интенсивности из красного канала. |
D2D1_CHANNEL_SELECTOR_G | Эффект извлекает выходные данные интенсивности из зеленого канала. |
D2D1_CHANNEL_SELECTOR_B | Эффект извлекает выходные данные интенсивности из синего канала. |
D2D1_CHANNEL_SELECTOR_A | Эффект извлекает выходные данные интенсивности из альфа-канала. |
Выходной растровый рисунок
Можно определить максимальный размер выходной растровой карты с помощью следующих уравнений:
Выходной растровый рисунок? Пиксели=(Размер растрового изображения ввода?( DIPs)+Scale)*(DPI пользователя/96)
Выходные растровые картыy Пикселей=(Размер битового изображения вводаy(DIPs) + Scale)*(DPI пользователя/96)
Требования
Требование | Ценность |
---|---|
Минимальный поддерживаемый клиент | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальный поддерживаемый сервер | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |