ColorMatrix Sınıf

Tanım

RGBAW alanının koordinatlarını içeren 5 x 5 matrisini tanımlar. sınıfının çeşitli yöntemleri ImageAttributes , renk matrisi kullanarak görüntü renklerini ayarlar. Bu sınıf devralınamaz.

public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
Devralma
ColorMatrix

Örnekler

Aşağıdaki örnek, tümü bir renk (0.2, 0.0, 0.4, 1.0) olan bir görüntü alır ve önceki paragraflarda açıklanan dönüşümü uygular.

Aşağıdaki çizimde, soldaki özgün resim ve sağ tarafta dönüştürülmüş görüntü gösterilmektedir.

Renkler

Aşağıdaki örnekteki kod, yeniden renklendirmeyi gerçekleştirmek için aşağıdaki adımları kullanır:

  1. Bir ColorMatrix nesneyi başlatın.

  2. Bir ImageAttributes nesneyi İçerik Oluşturucu ve nesnesini nesnesinin SetColorMatrix yöntemine ImageAttributes geçirinColorMatrix.

  3. ImageAttributes nesnesini nesnesinin DrawImageGraphics yöntemine geçirin.

Yukarıdaki örnek, Windows Forms ile kullanılmak üzere tasarlanmıştır ve olay işleyicisinin Paint parametresi olan öğesini gerektirir.PaintEventArgse

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)

Açıklamalar

Matris katsayıları, ARGB homojen değerlerini dönüştürmek için kullanılan 5 x 5 doğrusal dönüşümü oluşturur. Örneğin ARGB vektörleri kırmızı, yeşil, mavi, alfa ve w olarak temsil edilir ve w her zaman 1 olur.

Örneğin, renkle (0.2, 0.0, 0.4, 1.0) başlamak istediğinizi ve aşağıdaki dönüştürmeleri uygulamak istediğinizi varsayalım:

  1. Kırmızı bileşenin iki katı

  2. Kırmızı, yeşil ve mavi bileşenlere 0,2 ekleyin

Aşağıdaki matris çarpması, dönüşüm çiftini listelenen sırayla gerçekleştirir.

Yeniden Renklendirme

Renk matrisinin öğeleri satıra ve sonra sütuna göre dizinlenir (sıfır tabanlı). Örneğin, M matrisinin beşinci satırındaki ve üçüncü sütunundaki giriş M[4][2] tarafından belirtilir.

5×5 kimlik matrisinin (aşağıdaki çizimde gösterilmiştir) çapraz üzerinde 1'ler, diğer her yerde 0'lar bulunur. Renk vektörlerini kimlik matrisi ile çarpıyorsanız, renk vektöru değişmez. Renk dönüştürme matrisini oluşturmanın kullanışlı bir yolu, kimlik matrisiyle başlamak ve istenen dönüşümü üreten küçük bir değişiklik yapmaktır.

Yeniden Renklendirme

Matrisler ve dönüşümler hakkında daha ayrıntılı bilgi için bkz. Koordinat Sistemleri ve Dönüşümler.

Oluşturucular

ColorMatrix()

ColorMatrix sınıfının yeni bir örneğini başlatır.

ColorMatrix(ReadOnlySpan<Single>)

RGBAW alanının koordinatlarını içeren 5 x 5 matrisini tanımlar. sınıfının çeşitli yöntemleri ImageAttributes , renk matrisi kullanarak görüntü renklerini ayarlar. Bu sınıf devralınamaz.

ColorMatrix(Single[][])

Belirtilen matristeki ColorMatrixnewColorMatrixöğeleri kullanarak sınıfının yeni bir örneğini başlatır.

Özellikler

Item[Int32, Int32]

öğesinde belirtilen satır ve sütunda ColorMatrixöğesini alır veya ayarlar.

Matrix00

öğesini bu ColorMatrixöğesinin 0 (sıfır) satırında ve 0 sütununda alır veya ayarlar.

Matrix01

öğesini bu ColorMatrixöğesinin 0 (sıfır) satırında ve ilk sütununda alır veya ayarlar.

Matrix02

öğesini bu ColorMatrixöğesinin 0 (sıfır) satırında ve ikinci sütununda alır veya ayarlar.

Matrix03

öğesini bu ColorMatrixöğesinin 0 (sıfır) satırında ve üçüncü sütununda alır veya ayarlar. Alfa bileşenini temsil eder.

Matrix04

öğesini bu ColorMatrixöğesinin 0 (sıfır) satırında ve dördüncü sütununda alır veya ayarlar.

Matrix10

öğesini bu ColorMatrixöğesinin ilk satırında ve 0 (sıfır) sütununda alır veya ayarlar.

Matrix11

öğesini bu ColorMatrixöğesinin ilk satırında ve ilk sütununda alır veya ayarlar.

Matrix12

öğesini bu ColorMatrixöğesinin ilk satırında ve ikinci sütununda alır veya ayarlar.

Matrix13

öğesini bu ColorMatrixöğesinin ilk satırında ve üçüncü sütununda alır veya ayarlar. Alfa bileşenini temsil eder.

Matrix14

öğesini bu ColorMatrixöğesinin ilk satırında ve dördüncü sütununda alır veya ayarlar.

Matrix20

öğesini bu ColorMatrixöğesinin ikinci satırında ve 0 (sıfır) sütununda alır veya ayarlar.

Matrix21

öğesini bu ColorMatrixöğesinin ikinci satırında ve ilk sütununda alır veya ayarlar.

Matrix22

öğesini bu ColorMatrixöğesinin ikinci satırında ve ikinci sütununda alır veya ayarlar.

Matrix23

öğesini bu ColorMatrixöğesinin ikinci satırında ve üçüncü sütununda alır veya ayarlar.

Matrix24

öğesini bu ColorMatrixöğesinin ikinci satırında ve dördüncü sütununda alır veya ayarlar.

Matrix30

Öğesini bu ColorMatrixöğesinin üçüncü satırında ve 0 (sıfır) sütununda alır veya ayarlar.

Matrix31

Öğesini bu ColorMatrixöğesinin üçüncü satırında ve ilk sütununda alır veya ayarlar.

Matrix32

öğesini bu ColorMatrixöğesinin üçüncü satırında ve ikinci sütununda alır veya ayarlar.

Matrix33

öğesini bu ColorMatrixöğesinin üçüncü satırında ve üçüncü sütununda alır veya ayarlar. Alfa bileşenini temsil eder.

Matrix34

Öğesini bu ColorMatrixöğesinin üçüncü satırında ve dördüncü sütununda alır veya ayarlar.

Matrix40

Öğesini bu ColorMatrixöğesinin dördüncü satırında ve 0 (sıfır) sütununda alır veya ayarlar.

Matrix41

Öğesini bu ColorMatrixöğesinin dördüncü satırında ve ilk sütununda alır veya ayarlar.

Matrix42

Öğesini bu ColorMatrixöğesinin dördüncü satırında ve ikinci sütununda alır veya ayarlar.

Matrix43

öğesini bu ColorMatrixöğesinin dördüncü satırında ve üçüncü sütununda alır veya ayarlar. Alfa bileşenini temsil eder.

Matrix44

Öğesini bu ColorMatrixöğesinin dördüncü satırında ve dördüncü sütununda alır veya ayarlar.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ayrıca bkz.