Nasıl yapılır: Görüntü Renklerini Çevirme
Çeviri, dört renk bileşeninden bir veya daha fazlası için bir değer ekler. Çevirileri temsil eden renk matrisi girişleri aşağıdaki tabloda verilmiştir.
| Çevrilen bileşen | Matris girişi |
|---|---|
| Kırmızı | [4] [0] |
| Yeşil | [4] [1] |
| Mavi | [4] [2] |
| Alfa | [4] [3] |
Örnek
Aşağıdaki örnek, dosya Image dosyasından bir nesnesi ColorBars.bmp. Ardından kod, görüntüde her pikselin kırmızı bileşenine 0,75 ekler. Özgün görüntü, dönüştürülmüş görüntüyle birlikte çizilir.
Aşağıdaki çizimde, sol tarafta özgün görüntü ve sağ tarafta dönüştürülmüş görüntü gösterilmiştir:

Aşağıdaki tabloda kırmızı çeviriden önce ve sonra gelen dört çubuk için renk vektörleri liste almaktadır. Bir renk bileşeni için en yüksek değer 1 olduğundan ikinci satırdaki kırmızı bileşenin değişmey olduğunu unutmayın. (Benzer şekilde, bir renk bileşeni için en düşük değer 0'dır.)
| Özgün | Çevrilmiş |
|---|---|
| Siyah (0, 0, 0, 1) | (0.75, 0, 0, 1) |
| Kırmızı (1, 0, 0, 1) | (1, 0, 0, 1) |
| Yeşil (0, 1, 0, 1) | (0.75, 1, 0, 1) |
| Mavi (0, 0, 1, 1) | (0.75, 0, 1, 1) |
Image image = new Bitmap("ColorBars.bmp");
ImageAttributes imageAttributes = new ImageAttributes();
int width = image.Width;
int height = image.Height;
float[][] colorMatrixElements = {
new float[] {1, 0, 0, 0, 0},
new float[] {0, 1, 0, 0, 0},
new float[] {0, 0, 1, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {.75f, 0, 0, 0, 1}};
ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);
imageAttributes.SetColorMatrix(
colorMatrix,
ColorMatrixFlag.Default,
ColorAdjustType.Bitmap);
e.Graphics.DrawImage(image, 10, 10, width, height);
e.Graphics.DrawImage(
image,
new Rectangle(150, 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("ColorBars.bmp")
Dim imageAttributes As New ImageAttributes()
Dim width As Integer = image.Width
Dim height As Integer = image.Height
Dim colorMatrixElements As Single()() = { _
New Single() {1, 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.75F, 0, 0, 0, 1}}
Dim colorMatrix As New ColorMatrix(colorMatrixElements)
imageAttributes.SetColorMatrix( _
colorMatrix, _
ColorMatrixFlag.Default, _
ColorAdjustType.Bitmap)
e.Graphics.DrawImage(image, 10, 10, width, height)
' Pass in the destination rectangle (2nd argument), the upper-left corner
' (3rd and 4th arguments), width (5th argument), and height (6th
' argument) of the source rectangle.
e.Graphics.DrawImage( _
image, _
New Rectangle(150, 10, width, height), _
0, 0, _
width, _
height, _
GraphicsUnit.Pixel, _
imageAttributes)
Kod Derleniyor
Yukarıdaki örnek, Windows Forms ile kullanım için tasarlanmıştır ve olay PaintEventArgs e işleyicinin bir parametresi olan Paint 'i gerektirir. yerine ColorBars.bmp sisteminiz üzerinde geçerli olan bir görüntü dosyası adı ve yolu yazın.