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


Яркость к альфа-эффекту

Используйте яркость для альфа-эффекта, чтобы задать для альфа-канала яркость изображения и задать для цветовых каналов значение 0. Выходные данные этого эффекта можно использовать для создания полупрозрачного наложения в зависимости от яркости входного изображения. Или вы можете использовать его для создания маски изображения.

Примечание

Этот эффект не имеет свойств.

 

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

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

В этом примере показаны выходные данные яркости альфа-эффекта, составного по белой поверхности, чтобы показать непрозрачность.

До
изображение перед эффектом.
После
изображение после преобразования.

 

ComPtr<ID2D1Effect> luminanceToAlphaEffect;
m_d2dContext->CreateEffect(CLSID_D2D1LuminanceToAlpha, &luminanceToAlphaEffect);

luminanceToAlphaEffect->SetInput(0, bitmap);

// LuminanceToAlpha result 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> compositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Composite, &compositeEffect);

compositeEffect->SetInputEffect(0, floodEffect.Get());
compositeEffect->SetInputEffect(1, luminanceToAlphaEffect.Get());

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

Этот эффект задает альфа-канал выходных данных для яркости входного изображения с помощью этой цветовой матрицы.

цветовая матрица, используется эффектом для задания альфа-канала.

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

Примечание

Так как изображения хранятся в гамма-компенсированном формате, перед вычислением яркости изображения необходимо сначала выполнить обратную гамма-коррекцию, чтобы получить истинные значения цвета для изображения. Так как изображения обычно хранятся в гамме 2,2, можно использовать эффект гамма-передачи с экспонентой (1/2,2), а затем использовать выходные данные этого эффекта.

 

Требования

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

 

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

Размер выходных данных совпадает с размером входного изображения.

ID2D1Effect