Aracılığıyla paylaş


ColorMatrix Sınıf

Tanım

RGBAW alanının koordinatlarını içeren 5 x 5 matrisini tanımlar. ImageAttributes sınıfının çeşitli yöntemleri, 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ü tek renkli (0,2, 0,0, 0,4, 1,0) bir görüntü alır ve önceki paragraflarda açıklanan dönüşümü uygular.

Aşağıdaki çizimde, soldaki özgün görüntü ve sağda 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 nesnesi başlatın.

  2. bir ImageAttributes nesnesi oluşturun ve ColorMatrix nesnesini ImageAttributes nesnesinin SetColorMatrix yöntemine geçirin.

  3. ImageAttributes nesnesini bir Graphics nesnesinin DrawImage yöntemine geçirin.

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

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şeni iki katına çıkarma

  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ı bir tartışma 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. ImageAttributes sınıfının çeşitli yöntemleri, renk matrisi kullanarak görüntü renklerini ayarlar. Bu sınıf devralınamaz.

ColorMatrix(Single[][])

belirtilen matris newColorMatrixöğelerini kullanarak ColorMatrix sınıfının yeni bir örneğini başlatır.

Özellikler

Item[Int32, Int32]

öğesini ColorMatrixbelirtilen satır ve sütunda alır veya ayarlar.

Matrix00

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

Matrix01

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

Matrix02

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

Matrix03

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

Matrix04

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

Matrix10

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

Matrix11

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

Matrix12

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

Matrix13

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

Matrix14

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

Matrix20

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

Matrix21

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

Matrix22

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

Matrix23

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

Matrix24

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

Matrix30

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

Matrix31

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

Matrix32

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

Matrix33

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

Matrix34

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

Matrix40

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

Matrix41

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

Matrix42

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

Matrix43

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

Matrix44

öğesini bu ColorMatrixdö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()

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

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

Geçerli Objectbasit bir kopyasını oluşturur.

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

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

(Devralındığı yer: Object)

Şunlara uygulanır

Ayrıca bkz.

  • Görüntüleri Yeniden Renklendir