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


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 (показанная на следующем рисунке) имеет 1s на диагонали и 0 везде. При умножении цветового вектора на матрицу удостоверений цветной вектор не изменяется. Удобный способ формирования матрицы преобразования цвета — начать с матрицы удостоверений и внести небольшое изменение, которое создает требуемое преобразование.

Перекраска

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

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

ColorMatrix()

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

ColorMatrix(ReadOnlySpan<Single>)

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

ColorMatrix(Single[][])

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

Свойства

Item[Int32, Int32]

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

Matrix00

Возвращает или задает элемент в строке 0 (ноль) и 0 столбца этого ColorMatrix.

Matrix01

Возвращает или задает элемент в строке 0 (ноль) и первом столбце этого ColorMatrix.

Matrix02

Возвращает или задает элемент в строке 0 (ноль) и втором столбце этого ColorMatrix.

Matrix03

Возвращает или задает элемент в строке 0 (ноль) и третьем столбце этого ColorMatrix. Представляет альфа-компонент.

Matrix04

Возвращает или задает элемент в строке 0 (ноль) и четвертом столбце этого ColorMatrix.

Matrix10

Возвращает или задает элемент в первой строке и 0 (ноль) этого ColorMatrix.

Matrix11

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

Matrix12

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

Matrix13

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

Matrix14

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

Matrix20

Возвращает или задает элемент во второй строке и 0 (ноль) этого ColorMatrix.

Matrix21

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

Matrix22

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

Matrix23

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

Matrix24

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

Matrix30

Возвращает или задает элемент в третьей строке и 0 (ноль) этого ColorMatrix.

Matrix31

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

Matrix32

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

Matrix33

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

Matrix34

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

Matrix40

Возвращает или задает элемент в четвертой строке и 0 (ноль) этого ColorMatrix.

Matrix41

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

Matrix42

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

Matrix43

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

Matrix44

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

Методы

Equals(Object)

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

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

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

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

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

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

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

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

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

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

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

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