Эффект тени
Используйте эффект тени для создания тени из альфа-канала изображения. Тень является более непрозрачной для более высоких альфа-значений и более прозрачной для более низких альфа-значений. Можно задать величину размытия и цвет тени.
- Пример изображения
- Свойства эффекта
- Режимы оптимизации
- Выходное растровое изображение
- Requirements
- Связанные темы
CLSID для этого эффекта CLSID_D2D1Shadow.
Пример изображения
В приведенном здесь примере показаны выходные данные эффекта тени, преобразованные вниз и вправо с исходным изображением, составным над ним в исходном расположении. Эффект тени выводит только тень.
До |
---|
После |
ComPtr<ID2D1Effect> shadowEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Shadow, &shadowEffect);
shadowEffect->SetInput(0, bitmap);
// Shadow is composited on top of a white surface to show opacity.
ComPtr<ID2D1Effect> floodEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Flood, &floodEffect);
floodEffect->SetValue(D2D1_FLOOD_PROP_COLOR, D2D1::Vector4F(1.0f, 1.0f, 1.0f, 1.0f));
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);
affineTransformEffect->SetInputEffect(0, shadowEffect.Get());
D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F::Translation(20, 20));
affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
ComPtr<ID2D1Effect> compositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Composite, &compositeEffect);
compositeEffect->SetInputEffect(0, floodEffect.Get());
compositeEffect->SetInputEffect(1, affineTransformEffect.Get());
compositeEffect->SetInput(2, bitmap);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(compositeEffect.Get());
m_d2dContext->EndDraw();
Свойства эффекта
Отображаемое перечисление имен и индексов | Описание |
---|---|
BlurStandardDeviation D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION |
Величина размытия, применяемая к альфа-каналу изображения. Радиус размытия ядра можно вычислить, умножив стандартное отклонение на 3. Единицами стандартного отклонения и радиуса размытия являются DIP. Это свойство совпадает со свойством стандартного отклонения Gaussian Blur . Тип — FLOAT. Значение по умолчанию — 3,0f. |
Цвет D2D1_SHADOW_PROP_COLOR |
Цвет тени. Это свойство является D2D1_VECTOR_4F определяется следующим образом: (R, G, B, A). Этот цвет необходимо указать в прямом альфа-канале. Тип — D2D1_VECTOR_4F. Значение по умолчанию — {0.0f, 0.0f, 0.0f, 1.0f}. |
Optimization D2D1_SHADOW_PROP_OPTIMIZATION |
Уровень оптимизации производительности. Тип — D2D1_SHADOW_OPTIMIZATION. Значение по умолчанию — D2D1_SHADOW_OPTIMIZATION_BALANCED. |
Режимы оптимизации
Имя | Описание |
---|---|
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED | Применяет внутренние оптимизации, например предварительное масштабирование с относительно небольшими радиусами. Использует линейную фильтрацию. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED | Использует те же пороговые значения оптимизации, что и в режиме скорости, но использует трилинейную фильтрацию. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY | Использует только внутренние оптимизации с большими радиусами размытия, где приближения будут менее видны. Использует трилинейную фильтрацию. |
Выходное растровое изображение
Размер выходного растрового изображения равен размеру выходных данных размытия. Величину увеличения выходного растрового рисунка относительно исходного растрового рисунка можно вычислить с помощью следующего уравнения:
Увеличение размера растрового изображения вывода (X и Y) = BlurStandardDeviation (аппаратно-независимые пиксели (DIP))*6*(user DPI)/96
Выходные данные увеличиваются одинаково во всех направлениях, поэтому, например, если размер увеличивается на 10 пикселей в каждом направлении, левый верхний угол растрового изображения находится в (-5, -5), а правый нижний — в (105, 105), как показано на схеме здесь.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальная версия сервера | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |