ColorMatrix Класс

Определение

Определяет матрицу 5 x 5, которая содержит координаты для пространства RGBAW. Несколько методов класса ImageAttributes настраивают цвета изображения с помощью цветовой матрицы. Этот класс не наследуется.

public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
Наследование
ColorMatrix

Примеры

В приведенном ниже примере берется изображение, состоящее полностью из одного цвета (0,2, 0,0, 0,4, 1,0), и применяется преобразование, описанное в предыдущих абзацах.

На приведенном ниже рисунке показаны исходное изображение слева и преобразованное изображение справа.

Цвета цветов

Код в приведенном ниже примере использует следующие действия для перекрашивания:

  1. Инициализация объекта ColorMatrix.

  2. Создание объекта ImageAttributes и передача объекта ColorMatrix в метод SetColorMatrix объекта ImageAttributes.

  3. Передача объекта ImageAttributes в метод DrawImage объекта Graphics.

Предыдущий пример предназначен для использования с Windows Forms и требует PaintEventArgse, который является параметром обработчика Paint событий.

Image image = new Bitmap("InputColor.bmp");
ImageAttributes imageAttributes = new ImageAttributes();
int width = image.Width;
int height = image.Height;

float[][] colorMatrixElements = { 
   new float[] {2,  0,  0,  0, 0},        // red scaling factor of 2
   new float[] {0,  1,  0,  0, 0},        // green scaling factor of 1
   new float[] {0,  0,  1,  0, 0},        // blue scaling factor of 1
   new float[] {0,  0,  0,  1, 0},        // alpha scaling factor of 1
   new float[] {.2f, .2f, .2f, 0, 1}};    // three translations of 0.2

ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);

imageAttributes.SetColorMatrix(
   colorMatrix,
   ColorMatrixFlag.Default,
   ColorAdjustType.Bitmap);

e.Graphics.DrawImage(image, 10, 10);

e.Graphics.DrawImage(
   image,
   new Rectangle(120, 10, width, height),  // destination rectangle 
   0, 0,        // upper-left corner of source rectangle 
   width,       // width of source rectangle
   height,      // height of source rectangle
   GraphicsUnit.Pixel,
   imageAttributes);
Dim image As New Bitmap("InputColor.bmp")
Dim imageAttributes As New ImageAttributes()
Dim width As Integer = image.Width
Dim height As Integer = image.Height

' The following matrix consists of the following transformations:
' red scaling factor of 2
' green scaling factor of 1
' blue scaling factor of 1
' alpha scaling factor of 1
' three translations of 0.2
Dim colorMatrixElements As Single()() = { _
   New Single() {2, 0, 0, 0, 0}, _
   New Single() {0, 1, 0, 0, 0}, _
   New Single() {0, 0, 1, 0, 0}, _
   New Single() {0, 0, 0, 1, 0}, _
   New Single() {0.2F, 0.2F, 0.2F, 0, 1}}

Dim colorMatrix As New ColorMatrix(colorMatrixElements)

imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap)

e.Graphics.DrawImage(image, 10, 10)

e.Graphics.DrawImage( _
   image, _
   New Rectangle(120, 10, width, height), _
   0, _
   0, _
   width, _
   height, _
   GraphicsUnit.Pixel, _
   imageAttributes)

Комментарии

Коэффициенты матрицы представляют собой линейное преобразование 5 x 5, которое используется для преобразования однородных значений ARGB. Например, вектор ARGB представлен красным, зеленым, синим, альфа и w, где w всегда равно 1.

Предположим, вы хотите начать с цвета (0,2, 0,0, 0,4, 1,0) и применить следующие преобразования:

  1. Увеличение красного компонента в два раза.

  2. Добавление 0,2 к красному, зеленому и синему компонентам.

Следующее умножение матриц выполняет пару преобразований в указанном порядке.

Перекрашивание перекраски

Элементы цветовой матрицы индексируются (с отчетом от нуля) по строкам и затем по столбцам. Например, запись в пятой строке и третьем столбце матрицы M обозначается M[4][2].

Единичная матрица 5×5 (показанная на следующем рисунке) содержит 1 на диагонали и 0 в остальных ячейках. При умножении цветового вектора на единичную матрицу он не изменяется. Удобный способ формирования матрицы цветового преобразования заключается в том, чтобы начать с единичной матрицы и внести небольшое изменение, которое приводит к желаемому преобразованию.

Перекрашивание перекраски

Более подробное описание матриц и преобразований см. в разделе Системы координат и преобразования.

Конструкторы

ColorMatrix()

Инициализирует новый экземпляр класса ColorMatrix.

ColorMatrix(ReadOnlySpan<Single>)

Определяет матрицу 5 x 5, которая содержит координаты для пространства RGBAW. Несколько методов класса ImageAttributes настраивают цвета изображения с помощью цветовой матрицы. Этот класс не наследуется.

ColorMatrix(Single[][])

Инициализирует новый экземпляр класса ColorMatrix с помощью элементов указанной матрицы newColorMatrix.

Свойства

Item[Int32, Int32]

Возвращает или задает элемент в указанной строке и указанном столбце в объекте ColorMatrix.

Matrix00

Возвращает или задает элемент в нулевой строке и нулевом столбце объекта ColorMatrix.

Matrix01

Возвращает или задает элемент в нулевой строке и первом столбце объекта ColorMatrix.

Matrix02

Возвращает или задает элемент в нулевой строке и втором столбце объекта ColorMatrix.

Matrix03

Возвращает или задает элемент в нулевой строке и третьем столбце объекта ColorMatrix. Представляет компонент альфа.

Matrix04

Возвращает или задает элемент в нулевой строке и четвертом столбце объекта ColorMatrix.

Matrix10

Возвращает или задает элемент в первой строке и нулевом столбце объекта ColorMatrix.

Matrix11

Возвращает или задает элемент в первой строке и первом столбце объекта ColorMatrix.

Matrix12

Возвращает или задает элемент в первой строке и втором столбце объекта ColorMatrix.

Matrix13

Возвращает или задает элемент в первой строке и третьем столбце объекта ColorMatrix. Представляет компонент альфа.

Matrix14

Возвращает или задает элемент в первой строке и четвертом столбце объекта ColorMatrix.

Matrix20

Возвращает или задает элемент во второй строке и нулевом столбце объекта ColorMatrix.

Matrix21

Возвращает или задает элемент во второй строке и первом столбце объекта ColorMatrix.

Matrix22

Возвращает или задает элемент во второй строке и втором столбце объекта ColorMatrix.

Matrix23

Возвращает или задает элемент во второй строке и третьем столбце объекта ColorMatrix.

Matrix24

Возвращает или задает элемент во второй строке и четвертом столбце объекта ColorMatrix.

Matrix30

Возвращает или задает элемент в третьей строке и нулевом столбце объекта ColorMatrix.

Matrix31

Возвращает или задает элемент в третьей строке и первом столбце объекта ColorMatrix.

Matrix32

Возвращает или задает элемент в третьей строке и втором столбце объекта ColorMatrix.

Matrix33

Возвращает или задает элемент в третьей строке и третьем столбце объекта ColorMatrix. Представляет компонент альфа.

Matrix34

Возвращает или задает элемент в третьей строке и четвертом столбце объекта ColorMatrix.

Matrix40

Возвращает или задает элемент в четвертой строке и нулевом столбце объекта ColorMatrix.

Matrix41

Возвращает или задает элемент в четвертой строке и первом столбце объекта ColorMatrix.

Matrix42

Возвращает или задает элемент в четвертой строке и втором столбце объекта ColorMatrix.

Matrix43

Возвращает или задает элемент в четвертой строке и третьем столбце объекта ColorMatrix. Представляет компонент альфа.

Matrix44

Возвращает или задает элемент в четвертой строке и четвертом столбце объекта ColorMatrix.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел