ColorMatrix Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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.
Aşağıdaki örnekteki kod, yeniden renklendirmeyi gerçekleştirmek için aşağıdaki adımları kullanır:
bir ColorMatrix nesnesi başlatın.
bir ImageAttributes nesnesi oluşturun ve ColorMatrix nesnesini ImageAttributes nesnesinin SetColorMatrix yöntemine geçirin.
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 PaintEventArgse
gerektirir.
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:
Kırmızı bileşeni iki katına çıkarma
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.
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.
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 |
Ö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