次の方法で共有


ColorMatrix クラス

定義

RGBAW 空間の座標を含む 5 x 5 行列を定義します。 ImageAttributes クラスのいくつかのメソッドは、カラー マトリックスを使用してイメージの色を調整します。 このクラスは継承できません。

public ref class ColorMatrix sealed
public sealed class ColorMatrix
type ColorMatrix = class
Public NotInheritable Class ColorMatrix
継承
ColorMatrix

次の例では、すべて 1 色 (0.2、0.0、0.4、1.0) の画像を取得し、前の段落で説明した変換を適用します。

次の図は、左側の元の画像と右側の変換されたイメージを示しています。

色

次の例のコードでは、次の手順を使用して色変更を実行します。

  1. ColorMatrix オブジェクトを初期化します。

  2. ImageAttributes オブジェクトを作成し、ColorMatrix オブジェクトを ImageAttributes オブジェクトの SetColorMatrix メソッドに渡します。

  3. ImageAttributes オブジェクトを、Graphics オブジェクトの DrawImage メソッドに渡します。

前の例は Windows フォームで使用できるように設計されており、Paint イベント ハンドラーのパラメーターである PaintEventArgseが必要です

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)

注釈

行列係数は、ARGB 同種値の変換に使用される 5 x 5 の線形変換を構成します。 たとえば、ARGB ベクターは、赤、緑、青、アルファ、w として表され、w は常に 1 です。

たとえば、色 (0.2、0.0、0.4、1.0) から始めて、次の変換を適用するとします。

  1. 赤いコンポーネントを 2 倍に

  2. 赤、緑、青の各コンポーネントに 0.2 を追加する

次の行列乗算では、一覧の順序で変換のペアが実行されます。

色変更

カラー マトリックスの要素は、行および列ごとにインデックスが作成されます (0 から始まります)。 たとえば、行列 M の 5 行目と 3 列目のエントリは M[4][2] で示されます。

5×5 の ID マトリックス (次の図に示します) は、対角線上に 1、他の場所では 0 を持っています。 色ベクトルに同一行列を乗算しても、色ベクトルは変化しません。 色変換の行列を形成する便利な方法は、ID 行列から始めて、目的の変換を生成する小さな変更を行う方法です。

色変更

行列と変換の詳細については、「座標系と変換の」を参照してください。

コンストラクター

ColorMatrix()

ColorMatrix クラスの新しいインスタンスを初期化します。

ColorMatrix(ReadOnlySpan<Single>)

RGBAW 空間の座標を含む 5 x 5 行列を定義します。 ImageAttributes クラスのいくつかのメソッドは、カラー マトリックスを使用してイメージの色を調整します。 このクラスは継承できません。

ColorMatrix(Single[][])

指定したマトリックス newColorMatrix内の要素を使用して、ColorMatrix クラスの新しいインスタンスを初期化します。

プロパティ

Item[Int32, Int32]

ColorMatrix内の指定した行と列にある要素を取得または設定します。

Matrix00

この ColorMatrixの 0 (ゼロ) 行と 0 列の要素を取得または設定します。

Matrix01

この ColorMatrixの 0 (ゼロ) 行と最初の列にある要素を取得または設定します。

Matrix02

この ColorMatrixの 0 (ゼロ) 行と 2 列目の要素を取得または設定します。

Matrix03

この ColorMatrixの 0 (ゼロ) 行と 3 列目の要素を取得または設定します。 アルファ コンポーネントを表します。

Matrix04

この ColorMatrixの 0 (ゼロ) 行と 4 列目の要素を取得または設定します。

Matrix10

この ColorMatrixの最初の行と 0 (ゼロ) 列の要素を取得または設定します。

Matrix11

この ColorMatrixの最初の行と最初の列にある要素を取得または設定します。

Matrix12

この ColorMatrixの最初の行と 2 番目の列にある要素を取得または設定します。

Matrix13

この ColorMatrixの最初の行と 3 番目の列にある要素を取得または設定します。 アルファ コンポーネントを表します。

Matrix14

この ColorMatrixの最初の行と 4 番目の列にある要素を取得または設定します。

Matrix20

この ColorMatrixの 2 番目の行と 0 (ゼロ) 列にある要素を取得または設定します。

Matrix21

この ColorMatrixの 2 番目の行と最初の列にある要素を取得または設定します。

Matrix22

この ColorMatrixの 2 番目の行と 2 番目の列にある要素を取得または設定します。

Matrix23

この ColorMatrixの 2 番目の行と 3 番目の列にある要素を取得または設定します。

Matrix24

この ColorMatrixの 2 番目の行と 4 番目の列にある要素を取得または設定します。

Matrix30

この ColorMatrixの 3 番目の行と 0 (ゼロ) 列にある要素を取得または設定します。

Matrix31

この ColorMatrixの 3 番目の行と最初の列にある要素を取得または設定します。

Matrix32

この ColorMatrixの 3 番目の行と 2 番目の列にある要素を取得または設定します。

Matrix33

この ColorMatrixの 3 番目の行と 3 番目の列にある要素を取得または設定します。 アルファ コンポーネントを表します。

Matrix34

この ColorMatrixの 3 行目と 4 列目の要素を取得または設定します。

Matrix40

この ColorMatrixの 4 番目の行と 0 (ゼロ) 列の要素を取得または設定します。

Matrix41

この ColorMatrixの 4 番目の行と最初の列にある要素を取得または設定します。

Matrix42

この ColorMatrixの 4 行目と 2 列目の要素を取得または設定します。

Matrix43

この ColorMatrixの 4 行目と 3 列目の要素を取得または設定します。 アルファ コンポーネントを表します。

Matrix44

この ColorMatrixの 4 行目と 4 列目の要素を取得または設定します。

メソッド

Equals(Object)

指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください