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


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

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

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 * CЭкспонент + смещение

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

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

Заметка

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

  • Амплитудное значение не привязано и не является модульным.
  • Экспонентное значение не привязано и не является модульным.
  • Значение смещения не привязано и не является модульным.
Отображаемое имя и перечисление индексов Описание
RedAmplitude
D2D1_GAMMATRANSFER_PROP_RED_AMPLITUDE
Амплитуды гамма-передачи для канала Red. Тип FLOAT.
Значение по умолчанию — 1.0f.
Red Exponent
D2D1_GAMMATRANSFER_PROP_RED_EXPONENT
Экспонент функции гамма-передачи для канала Red. Тип FLOAT.
Значение по умолчанию — 1.0f.
RedOffset
D2D1_GAMMATRANSFER_PROP_RED_OFFSET
Смещение функции гамма-передачи для канала Red. Тип FLOAT.
Значение по умолчанию — 0.0f.
RedDisable
D2D1_GAMMATRANSFER_PROP_RED_DISABLE
Если задано значение TRUE, функция передачи не применяется к каналу Red. Используется функция передачи удостоверений. Если задать значение FALSE, он применяет функцию гамма-передачи к каналу Red. Тип — 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, оно применяет функцию гамма-передачи к зеленому каналу. Тип — 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
Смещение функции гамма-передачи для канала Blue. Тип FLOAT.
Значение по умолчанию — 0.0f.
BlueDisable
D2D1_GAMMATRANSFER_PROP_BLUE_DISABLE
Если задано значение TRUE, функция передачи не применяется к каналу Blue. Используется функция передачи удостоверений. Если задать значение FALSE, он применяет функцию гамма-передачи к каналу Blue. Тип — BOOL.
Значение по умолчанию — FALSE.
AlphaAmplitude
D2D1_GAMMATRANSFER_PROP_ALPHA_AMPLITUDE
Амплитуда гамма-передачи для альфа-канала. Тип FLOAT.
Значение по умолчанию — 1.0f.
Alpha Exponent
D2D1_GAMMATRANSFER_PROP_ALPHA_EXPONENT
Экспонент функции гамма-передачи для альфа-канала. Тип FLOAT.
Значение по умолчанию — 1.0f.
АльфаOffset
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