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


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

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

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();

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

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

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

Заметка

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

  • Перехват Y не ограничен и не является модульным.
  • Склон не ограничен и не является единичного.
Отображаемое имя и перечисление индексов Тип и значение по умолчанию Описание
RedYIntercept
D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT
ПЛАВАТЬ
0.0f
Y-перехват линейной функции для канала Red.
RedSlope
D2D1_LINEARTRANSFER_PROP_RED_SLOPE
ПЛАВАТЬ
1.0f
Наклон линейной функции для канала Red.
RedDisable
D2D1_LINEARTRANSFER_PROP_RED_DISABLE
BOOL
ЛОЖНЫЙ
Если задать значение TRUE, эффект не применяет функцию передачи к каналу Red. Если задать значение FALSE, эффект применяет функцию RedLinearTransfer к каналу Red.
GreenYIntercept
D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT
ПЛАВАТЬ
0.0f
Y-перехват линейной функции для зеленого канала.
GreenSlope
D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE
ПЛАВАТЬ
1.0f
Наклон линейной функции для зеленого канала.
GreenDisable
D2D1_LINEARTRANSFER_PROP_GREEN_DISABLE
BOOL
ЛОЖНЫЙ
Если задать значение TRUE, эффект не применяет функцию передачи к зеленому каналу. Если задать значение FALSE, оно применяет функцию GreenLinearTransfer к каналу Green.
BlueYIntercept
D2D1_LINEARTRANSFER_PROP_BLUE_Y_INTERCEPT
ПЛАВАТЬ
0.0f
Y-перехват линейной функции для синего канала.
BlueSlope
D2D1_LINEARTRANSFER_PROP_BLUE_SLOPE
ПЛАВАТЬ
1.0f
Наклон линейной функции для синего канала.
BlueDisable
D2D1_LINEARTRANSFER_PROP_BLUE_DISABLE
BOOL
ЛОЖНЫЙ
Если задать значение TRUE, эффект не применяет функцию передачи к каналу Blue. Если задать значение FALSE, оно применяет функцию BlueLinearTransfer к каналу Blue Channel.
AlphaYIntercept
D2D1_LINEARTRANSFER_PROP_ALPHA_Y_INTERCEPT
ПЛАВАТЬ
0.0f
Y-перехват линейной функции для альфа-канала.
AlphaSlope
D2D1_LINEARTRANSFER_PROP_ALPHA_SLOPE
ПЛАВАТЬ
0.0f
Наклон линейной функции для альфа-канала.
AlphaDisable
D2D1_LINEARTRANSFER_PROP_ALPHA_DISABLE
BOOL
ЛОЖНЫЙ
Если задано значение TRUE, эффект не применяет функцию передачи к каналу Alpha. Если задать значение FALSE, оно применяет функцию AlphaLinearTransfer к каналу Альфа.
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