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


Эффект цветовой матрицы

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

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

  • Удаление цветового канала из изображения.
  • Уменьшите цвет на изображении.
  • Переключение цветовых каналов.
  • Объединение цветовых каналов.

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

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

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

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

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

colorMatrixEffect->SetInput(0, bitmap);
D2D1_MATRIX_5X4_F matrix = D2D1::Matrix5x4F(0, 0, 1, 0,   0, 1, 0, 0,   1, 0, 0, 0,   0, 0, 0, 1,   0, 0, 0, 0);
colorMatrixEffect->SetValue(D2D1_COLORMATRIX_PROP_COLOR_MATRIX, matrix);

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

Этот эффект умножает значения RGBA изображения на матрицу основного столбца 5x4, как показано в этом уравнении.

пример определения матрицы.

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

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

Отображаемое перечисление имен и индексов Описание
ColorMatrix
D2D1_COLORMATRIX_PROP_COLOR_MATRIX
Матрица значений с плавающей точкой 5x4. Элементы в матрице не являются ограниченными и не являются унитарными.
По умолчанию используется матрица удостоверений.
Тип D2D1_MATRIX_5X4_F.
Значение по умолчанию — Matrix5x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0).
AlphaMode
D2D1_COLORMATRIX_PROP_ALPHA_MODE
Альфа-режим выходных данных. Дополнительные сведения см. в разделе Альфа-режимы .
Тип D2D1_COLORMATRIX_ALPHA_MODE.
Значение по умолчанию — D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED.
ClampOutput
D2D1_COLORMATRIX_PROP_CLAMP_OUTPUT
Указывает, зажимает ли эффект значения цвета в диапазоне от 0 до 1, прежде чем эффект передает значения следующему эффекту в графе. Эффект зажимает значения до того, как он предумультирует альфа- .
Если для этого параметра задано значение TRUE, эффект будет зажимать значения. Если задать для этого параметра значение FALSE, эффект не будет зажимать значения цвета, но другие эффекты и выходная поверхность может зажать значения, если они не имеют достаточно высокой точности.
Тип — BOOL.
Значение по умолчанию — FALSE.

Альфа-режимы

Имя Описание
D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED Эффект отменяет предумультирование входных данных, применяет цветовую матрицу и предумножет выходные данные.
D2D1_COLORMATRIX_ALPHA_MODE_STRAIGHT Эффект применяет цветовую матрицу непосредственно к входным данным и не изменяет выходные данные.

Требования

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

ID2D1Effect