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


Эффект линейной передачи

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

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

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

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

linearTransferEffect->SetInput(0, bitmap);

linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_SLOPE, 2.5f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE, 5.0f);

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

Функция линейной передачи создается на основе наклона и y-перехвата для каждого указанного канала. Интенсивность выходных пикселей C вычисляется с помощью формулы: C' = mC + B, где m — наклон линейной функции, а B — Y-перехват линейной функции.

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

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

Примечание

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

  • Y-перехват не ограничен и не единичен.
  • Наклон не ограничен и не является единичного.
Отображаемое перечисление имен и индексов Тип и значение по умолчанию Описание
RedYIntercept
D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT
FLOAT
0,0f
Y-перехват линейной функции для канала Red.
RedSlope
D2D1_LINEARTRANSFER_PROP_RED_SLOPE
FLOAT
1.0f
Наклон линейной функции для канала Red.
RedDisable
D2D1_LINEARTRANSFER_PROP_RED_DISABLE
BOOL
Ложь.
Если для этого параметра задано значение TRUE, функция передачи не применяется к красному каналу. Если для этого параметра задано значение FALSE, эффект применяет функцию RedLinearTransfer к красному каналу.
GreenYIntercept
D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT
FLOAT
0,0f
Y-перехват линейной функции для канала Green.
GreenSlope
D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE
FLOAT
1.0f
Наклон линейной функции для зеленого канала.
GreenDisable
D2D1_LINEARTRANSFER_PROP_GREEN_DISABLE
BOOL
Ложь.
Если для этого параметра задано значение TRUE, функция передачи не применяется к зеленому каналу. Если для этого параметра задано значение FALSE, функция GreenLinearTransfer применяется к каналу Green.
BlueYIntercept
D2D1_LINEARTRANSFER_PROP_BLUE_Y_INTERCEPT
FLOAT
0,0f
Y-перехват линейной функции для синего канала.
BlueSlope
D2D1_LINEARTRANSFER_PROP_BLUE_SLOPE
FLOAT
1.0f
Наклон линейной функции для синего канала.
BlueDisable
D2D1_LINEARTRANSFER_PROP_BLUE_DISABLE
BOOL
Ложь.
Если для этого параметра задано значение TRUE, функция передачи не применяется к синему каналу. Если для этого параметра задано значение FALSE, функция BlueLinearTransfer применяется к синему каналу.
AlphaYIntercept
D2D1_LINEARTRANSFER_PROP_ALPHA_Y_INTERCEPT
FLOAT
0,0f
Y-перехват линейной функции для альфа-канала.
AlphaSlope
D2D1_LINEARTRANSFER_PROP_ALPHA_SLOPE
FLOAT
0,0f
Наклон линейной функции для альфа-канала.
AlphaDisable
D2D1_LINEARTRANSFER_PROP_ALPHA_DISABLE
BOOL
Ложь.
Если для этого параметра задано значение TRUE, функция передачи не применяется к каналу Альфа. Если для этого параметра задано значение FALSE, функция AlphaLinearTransfer применяется к каналу Alpha.
ClampOutput
D2D1_LINEARTRANSFER_PROP_CLAMP_OUTPUT
BOOL
Ложь.
Указывает, зажимает ли эффект значения цвета в диапазоне от 0 до 1, прежде чем эффект передает значения следующему эффекту в графе. Эффект зажимает значения до того, как он предумультирует альфа- .
Если для этого параметра задано значение TRUE, эффект будет зажимать значения. Если задать для этого параметра значение FALSE, эффект не будет зажимать значения цвета, но другие эффекты и выходная поверхность может зажать значения, если они не имеют достаточно высокой точности.

Требования

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

ID2D1Effect