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


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

Используйте эффект цветовой матрицы для изменения значений 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, 1, 0, 0, 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