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


Эффект гамма-передачи

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

CLSID для этого эффекта CLSID_D2D1GammaTransfer. Чтобы использовать этот эффект, добавьте dxguid.lib в зависимости компоновщика.

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

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

gammaTransferEffect->SetInput(0, bitmap);

gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_RED_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT, 0.25f);

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

Этот эффект применяет гамма-функцию передачи на основе уравнения здесь.

Интенсивность входных пикселей представлена как C, а интенсивность выходных пикселей — как C'. C' = amplitude * CExponent + Offset

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

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

Примечание

Для всех каналов свойств гамма-передачи:

  • Значение амплитуды не ограничивается и не является унитарным.
  • Значение экспоненты не ограничивается и не является унитарным.
  • Значение смещения не ограничивается и является неунитарным.
Отображаемое перечисление имен и индексов Описание
RedAmplitude
D2D1_GAMMATRANSFER_PROP_RED_AMPLITUDE
Амплитуда гамма-функции передачи для красного канала. Тип — FLOAT.
Значение по умолчанию — 1,0f.
Red Exponent
D2D1_GAMMATRANSFER_PROP_RED_EXPONENT
Экспонента гамма-функции передачи для красного канала. Тип — FLOAT.
Значение по умолчанию — 1,0f.
RedOffset
D2D1_GAMMATRANSFER_PROP_RED_OFFSET
Смещение функции гамма-передачи для красного канала. Тип — FLOAT.
Значение по умолчанию — 0,0f.
RedDisable
D2D1_GAMMATRANSFER_PROP_RED_DISABLE
Если для этого параметра задано значение TRUE, функция передачи не применяется к красному каналу. Используется функция передачи удостоверений. Если для этого параметра задано значение FALSE, функция гамма-передачи применяется к красному каналу. Тип — BOOL.
Значение по умолчанию — FALSE.
GreenAmplitude
D2D1_GAMMATRANSFER_PROP_GREEN_AMPLITUDE
Амплитуда гамма-функции передачи для зеленого канала. Тип — FLOAT.
Значение по умолчанию — 1,0f.
Green Exponent
D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT
Степень гамма-функции передачи для зеленого канала. Тип — FLOAT.
Значение по умолчанию — 1,0f.
GreenOffset
D2D1_GAMMATRANSFER_PROP_GREEN_OFFSET
Смещение функции гамма-передачи для зеленого канала. Тип — FLOAT.
Значение по умолчанию — 0,0f.
GreenDisable
D2D1_GAMMATRANSFER_PROP_GREEN_DISABLE
Если для этого параметра задано значение TRUE, функция передачи не применяется к зеленому каналу. Используется функция передачи удостоверений. Если для этого параметра задано значение FALSE, функция гамма-передачи применяется к каналу Green. Тип — BOOL.
Значение по умолчанию — FALSE.
BlueAmplitude
D2D1_GAMMATRANSFER_PROP_BLUE_AMPLITUDE
Амплитуда гамма-функции передачи для синего канала. Тип — FLOAT.
Значение по умолчанию — 1,0f.
Blue Exponent
D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT
Степень гамма-функции передачи для синего канала. Тип — FLOAT.
Значение по умолчанию — 1,0f.
BlueOffset
D2D1_GAMMATRANSFER_PROP_BLUE_OFFSET
Смещение функции гамма-передачи для синего канала. Тип — FLOAT.
Значение по умолчанию — 0,0f.
BlueDisable
D2D1_GAMMATRANSFER_PROP_BLUE_DISABLE
Если для этого параметра задано значение TRUE, функция передачи не применяется к синему каналу. Используется функция передачи удостоверений. Если для этого параметра задано значение FALSE, функция гамма-передачи применяется к синему каналу. Тип — BOOL.
Значение по умолчанию — FALSE.
AlphaAmplitude
D2D1_GAMMATRANSFER_PROP_ALPHA_AMPLITUDE
Амплитуда функции гамма-передачи для альфа-канала. Тип — FLOAT.
Значение по умолчанию — 1,0f.
АльфаЭкспонент
D2D1_GAMMATRANSFER_PROP_ALPHA_EXPONENT
Экспонента функции гамма-передачи для альфа-канала. Тип — FLOAT.
Значение по умолчанию — 1,0f.
AlphaOffset
D2D1_GAMMATRANSFER_PROP_ALPHA_OFFSET
Смещение функции гамма-передачи для альфа-канала. Тип — FLOAT.
Значение по умолчанию — 0,0f.
AlphaDisable
D2D1_GAMMATRANSFER_PROP_ALPHA_DISABLE
Если для этого параметра задано значение TRUE, функция передачи не применяется к альфа-каналу. Используется функция передачи удостоверений. Если для этого параметра задано значение FALSE, функция гамма-передачи применяется к альфа-каналу. Тип — BOOL.
Значение по умолчанию — FALSE.
ClampOutput
D2D1_GAMMATRANSFER_PROP_CLAMP_OUTPUT
Указывает, зажимает ли эффект значения цвета в диапазоне от 0 до 1, прежде чем эффект передает значения следующему эффекту в графе. Эффект зажимает значения до того, как он предумультирует альфа- .
Если для этого параметра задано значение TRUE, эффект будет зажимать значения. Если задать для этого параметра значение FALSE, эффект не будет зажимать значения цвета, но другие эффекты и выходная поверхность может зажать значения, если они не имеют достаточно высокой точности.
Тип — BOOL.
Значение по умолчанию — FALSE.

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

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

Требования

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

ID2D1Effect