共用方式為


轉換色彩

轉換會將四個色彩元素中的一或多個加上一個數值。代表轉換的色彩矩陣項目列在下列表格中。

要轉換的元素 矩陣項目
紅色 [4][0]
綠色 [4][1]
藍色 [4][2]
Alpha [4][3]

下列範例會從 ColorBars.bmp 檔案建構 Image 物件,然後程式碼會將影像中每一個像素的紅色元素加上 0.75。原始影像就繪製在變換影像的旁邊。

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, 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)
[C#]
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);

下圖左邊顯示的是原始的影像,右邊顯示的是變換的影像。

下列表格會列出紅色轉換前後四列的色彩向量。請注意,由於色彩元素的最大值是 1,因此第二列中的紅色元素並不會變更。(同理,色彩元素的最小值 0)

原始的 轉換的
黑色 (0, 0, 0, 1) (0.75, 0, 0, 1)
紅色 (1, 0, 0, 1) (1, 0, 0, 1)
綠色 (0, 1, 0, 1) (0.75, 1, 0, 1)
藍色 (0, 0, 1, 1) (0.75, 0, 1, 1)