Nasıl yapılır: Renkleri Bükme
Yamultma, bir renk bileşenini başka bir renk bileşeniyle orantılı bir şekilde artırır veya azaltır. Örneğin, Kırmızı bileşenin mavi bileşen değerinin bir yarısı arttığı dönüşümü göz önünde bulundurun. Böyle bir dönüştürme altında (0,2, 0,5, 1) rengi (0,7, 0,5, 1) olur. Yeni kırmızı bileşen 0,2 + (1/2) (1) = 0,7 ' dir.
Örnek
Aşağıdaki örnek Image ColorBars4.bmp dosyadan bir nesne oluşturur. Ardından kod, önceki paragrafta açıklanan yamultma dönüşümünü görüntüdeki her piksele uygular.
Aşağıdaki çizim, sol taraftaki orijinal görüntüyü ve sağdaki Sheared görüntüsünü göstermektedir:

Aşağıdaki tabloda, yamultma dönüşümünde ve sonra dört çubuk için renk vektörleri listelenmektedir.
| Özgün | Sheared |
|---|---|
| (0, 0, 1, 1) | (0,5, 0, 1, 1) |
| (0,5, 1, 0,5, 1) | (0,75, 1, 0,5, 1) |
| (1, 1, 0, 1) | (1, 1, 0, 1) |
| (0,4, 0,4, 0,4, 1) | (0,6, 0,4, 0,4, 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.5f, 0, 1, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 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 = 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.5F, 0, 1, 0, 0}, _
New Single() {0, 0, 0, 1, 0}, _
New Single() {0, 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)
e.Graphics.DrawImage(image, New Rectangle(150, 10, width, height), 0, 0, _
width, height, GraphicsUnit.Pixel, imageAttributes)
Kod Derleniyor
yukarıdaki örnek, Windows Forms kullanımı için tasarlanmıştır ve PaintEventArgs e olay işleyicisinin bir parametresi olan gerektirir Paint . ColorBars.bmpSisteminizde geçerli bir görüntü adı ve yolu ile değiştirin.