共用方式為


如何:轉譯影像色彩

轉譯會把值加到四個色彩成分中的一個或多個。 下表提供了代表轉譯的色彩矩陣項目。

要轉譯的成分 矩陣項目
紅色 [4][0]
[4][1]
藍色 [4][2]
Alpha [4][3]

範例

下列範例會從檔案 ColorBars.bmp 建構 Image 物件。 然後程式碼會為影像中每個像素的紅色成分加 0.75。 原始影像會與已轉換的影像一起繪製。

下圖顯示左側的原始影像和右側的已轉換影像:

原始和已轉換影像的螢幕擷取畫面。

下表列出紅色轉譯前後四列的色彩向量。 請注意,因為色彩成分的最大值是 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)
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)

編譯程式碼

上述範例是為了搭配 Windows Forms 使用而設計,且其需要 PaintEventArgse,這是 Paint 事件處理常式的參數。 使用您系統上有效的影像檔名稱和路徑來取代 ColorBars.bmp

另請參閱