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

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

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)

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

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