ColorMatrix 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
定義包含 RGBAW 空間座標的 5 x 5 矩陣。 ImageAttributes 類別的數種方法會使用色彩矩陣來調整影像色彩。 無法繼承這個類別。
public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
- 繼承
-
ColorMatrix
範例
下列範例會採用全部一種色彩的影像(0.2、0.0、0.4、1.0),並套用上述段落中所述的轉換。
下圖顯示左側的原始影像和右側已轉換的影像。
下列範例中的程式代碼會使用下列步驟來執行重新著色:
初始化 ColorMatrix 物件。
建立 ImageAttributes 物件,並將 ColorMatrix 對象傳遞至 ImageAttributes 物件的 SetColorMatrix 方法。
將 ImageAttributes 對象傳遞至 Graphics 物件的 DrawImage 方法。
上述範例是專為搭配 Windows Forms 使用而設計,而且需要 PaintEventArgse
,這是 Paint 事件處理程式的參數。
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)
備註
矩陣係數構成 5 x 5 線性轉換,用於轉換 ARGB 同質值。 例如,ARGB 向量會以紅色、綠色、藍色、Alpha 和 w 表示,其中 w 一律為 1。
例如,假設您想要從色彩 (0.2、 0.0、 0.4、 1.0) 開始,並套用下列轉換:
將紅色元件加倍
將0.2新增至紅色、綠色和藍色元件
下列矩陣乘法會依照列出的順序執行轉換組。
色彩矩陣的專案會依數據列和數據行編製索引(以零起始)。 例如,矩陣 M 第五列和第三欄的專案是以 M[4][2] 表示。
5×5 身分識別矩陣(如下圖所示)在對角線上有 1 個,其他地方有 0 個。 如果您將色彩向量乘以識別矩陣,則色彩向量不會變更。 形成色彩轉換矩陣的便利方式,就是從識別矩陣開始,並進行產生所需轉換的小型變更。
如需矩陣和轉換的詳細討論,請參閱 座標系統和轉換。
建構函式
ColorMatrix() |
初始化 ColorMatrix 類別的新實例。 |
ColorMatrix(ReadOnlySpan<Single>) |
定義包含 RGBAW 空間座標的 5 x 5 矩陣。 ImageAttributes 類別的數種方法會使用色彩矩陣來調整影像色彩。 無法繼承這個類別。 |
ColorMatrix(Single[][]) |
使用指定之矩陣中的專案,初始化 ColorMatrix 類別的新實例, |
屬性
Item[Int32, Int32] |
取得或設定位於 ColorMatrix中指定之列和數據行的專案。 |
Matrix00 |
取得或設定位於這個 ColorMatrix之 0 (零) 列和 0 資料行的專案。 |
Matrix01 |
取得或設定位於這個 ColorMatrix之 0(零)列和第一欄的專案。 |
Matrix02 |
取得或設定在這個 ColorMatrix之 0 (零) 列和第二欄的專案。 |
Matrix03 |
取得或設定在這個 ColorMatrix之 0 (零) 列和第三欄的專案。 表示Alpha元件。 |
Matrix04 |
取得或設定位於這個 ColorMatrix之 0 (零) 資料列和第四欄的專案。 |
Matrix10 |
取得或設定在這個 ColorMatrix的第一個數據列和 0 (零) 資料行的專案。 |
Matrix11 |
取得或設定在這個 ColorMatrix的第一個數據列和第一欄的專案。 |
Matrix12 |
取得或設定在這個 ColorMatrix的第一個數據列和第二欄的專案。 |
Matrix13 |
取得或設定在這個 ColorMatrix的第一列和第三欄的專案。 表示Alpha元件。 |
Matrix14 |
取得或設定在這個 ColorMatrix的第一列和第四個數據行的專案。 |
Matrix20 |
取得或設定在這個 ColorMatrix的第二列和 0 (零) 資料行的專案。 |
Matrix21 |
取得或設定在這個 ColorMatrix的第二列和第一欄的專案。 |
Matrix22 |
取得或設定在這個 ColorMatrix的第二列和第二欄的專案。 |
Matrix23 |
取得或設定在這個 ColorMatrix的第二列和第三欄的專案。 |
Matrix24 |
取得或設定在這個 ColorMatrix的第二列和第四個數據行的專案。 |
Matrix30 |
取得或設定在這個 ColorMatrix的第三列和 0 (零) 資料行的專案。 |
Matrix31 |
取得或設定在這個 ColorMatrix的第三列和第一個數據行的專案。 |
Matrix32 |
取得或設定在這個 ColorMatrix的第三列和第二欄的專案。 |
Matrix33 |
取得或設定在這個 ColorMatrix的第三列和第三欄的專案。 表示Alpha元件。 |
Matrix34 |
取得或設定在這個 ColorMatrix的第三列和第四欄的專案。 |
Matrix40 |
取得或設定在這個 ColorMatrix的第四列和 0 (零) 資料行的專案。 |
Matrix41 |
取得或設定在這個 ColorMatrix的第四列和第一欄的專案。 |
Matrix42 |
取得或設定在這個 ColorMatrix的第四列和第二欄的專案。 |
Matrix43 |
取得或設定在這個 ColorMatrix的第四列和第三欄的專案。 表示Alpha元件。 |
Matrix44 |
取得或設定在這個 ColorMatrix的第四列和第四欄的專案。 |
方法
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
GetHashCode() |
做為預設哈希函式。 (繼承來源 Object) |
GetType() |
取得目前實例的 Type。 (繼承來源 Object) |
MemberwiseClone() |
建立目前 Object的淺層複本。 (繼承來源 Object) |
ToString() |
傳回表示目前 物件的字串。 (繼承來源 Object) |