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


Эффект размытия направления

Эффект размытия направления аналогичен гауссовскому размытию, за исключением того, что вы можете исказить размытие в определенном направлении. Этот эффект можно использовать для того, чтобы изображение выглядело так, как будто оно находится в движении, или чтобы подчеркнуть анимированное изображение.

CLSID для этого эффекта CLSID_D2D1DirectionalBlur.

Пример изображения

До
изображение перед эффектом.
После
изображение после преобразования.
ComPtr<ID2D1Effect> directionalBlurEffect;
m_d2dContext->CreateEffect(CLSID_D2D1DirectionalBlur, &directionalBlurEffect);

directionalBlurEffect->SetInput(0, bitmap);
directionalBlurEffect->SetValue(D2D1_DIRECTIONALBLUR_PROP_STANDARD_DEVIATION, 7.0f);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(directionalBlurEffect.Get());
m_d2dContext->EndDraw();

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

Отображаемое перечисление имен и индексов Описание
StandardDeviation
D2D1_DIRECTIONALBLUR_PROP_STANDARD_DEVIATION
Величина размытия, применяемая к изображению. Вы можете вычислить радиус размытия ядра, умножив стандартное отклонение на 3. Единицы стандартного отклонения и радиуса размытия — это DIP. Значение 0 DIP отключает этот эффект. Тип — FLOAT.
Значение по умолчанию — 3.0f.
Angle
D2D1_DIRECTIONALBLUR_PROP_ANGLE
Угол размытия относительно оси X в направлении против часовой стрелки. Единицы измерения указываются в градусах.
Ядро размытия сначала создается с помощью того же процесса, что и для эффекта размытия Gaussian . Затем значения ядра преобразуются в соответствии с углом размытия.
Тип — FLOAT.
Значение по умолчанию — 0,0f.
Optimization
D2D1_DIRECTIONALBLUR_PROP_OPTIMIZATION
Режим оптимизации. Дополнительные сведения см. в разделе Режимы оптимизации .
Тип D2D1_DIRECTIONALBLUR_OPTIMIZATION.
Значение по умолчанию — D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED.
BorderMode
D2D1_DIRECTIONALBLUR_PROP_BORDER_MODE
Режим, используемый для вычисления границы изображения, мягкой или жесткой. Дополнительные сведения см. в разделе Режимы границ .
Тип D2D1_BORDER_MODE.
Значение по умолчанию — D2D1_BORDER_MODE_SOFT.

Режимы оптимизации

Имя Описание
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED Применяет внутренние оптимизации, такие как предварительное масштабирование с относительно небольшими радиусами. Использует линейную фильтрацию.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED Использует те же пороговые значения оптимизации, что и режим скорости, но использует трилинейную фильтрацию.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY Использует только внутренние оптимизации с большими радиусами размытия, где приближения менее вероятно видны. Использует трилинейную фильтрацию.

Режимы границ

Имя Описание
D2D1_BORDER_MODE_SOFT Эффект заполняет изображение прозрачными черными пикселями при применении ядра размытия, что приводит к мягкому краю.
D2D1_BORDER_MODE_HARD Эффект прижимает выходные данные к размеру входного изображения. Когда эффект применяет ядро размытия, он расширяет входное изображение с помощью преобразования границы зеркало типа для образцов за пределами входных границ.

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

Размер выходного растрового изображения увеличивается в зависимости от стандартного отклонения, угла эффекта и режима границы. Если для режима границы задано значение D2D1_BORDER_MODE_SOFT размер выходного растрового изображения увеличивается на размер ядра размытия, представленного в пикселях. Эти уравнения можно использовать для вычисления размера выходного растрового изображения.

Требование Значение
Увеличение размера X выходного растрового рисунка StandardDeviation (DIP) * 6 * ((User DPI) / 96) * cos(Angle))
Увеличение Y выходного растрового рисунка StandardDeviation (DIP) * 6 * ((User DPI) / 96) * sin(Angle))

Требования

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

ID2D1Effect