Color構造体

インスタンスの作成

Color構造体のプロパティはすべて読み取り専用のため、色を変更するときにはオブジェクトを作成し直します。

任意の色

FromArgb()

メソッド 作成基準 備考
FromArgb(int argb) 32bitのARGB値から argbは、AARRGGBBの順
FromArgb(int alpha, Color baseColor) 8bitのアルファ値と、基となるColor構造体から  
FromArgb(int red, int green, int blue) 8bitの赤、緑、青から アルファ値は255 (不透明) となる
FromArgb(int alpha, int red, int green, int blue) 8bitのアルファ値、赤、緑、青から 引数はすべて0~255の範囲
Color.FromArgb メソッド (System.Drawing) | Microsoft Learn
Color blue = Color.FromArgb(unchecked((int)0xFF0000FF));
Color red = Color.FromArgb(255, 0, 0);

HSLから

HSL (HLS) の値を取得するメソッドは用意されていますが、設定する方法は提供されていないため、その必要があるときには独自に実装します。Is there a built-in C#/.NET System API for HSV to RGB? - Stack Overflow

定義済みの色

簡単にはColor.Redのようにすることで取得できます。これはnew Color(KnownColor.Red)とすることと同じです。Red - Color.cs

メソッド 作成基準
FromKnownColor(KnownColor color) KnownColor列挙型の要素から
FromName(string name) 定義済みの色の名前から (有効な名前は、KnownColor列挙型の要素の名前と同じ)

FromKnownColor()

public static Color FromKnownColor(
    KnownColor color
)
Color.FromKnownColor メソッド (KnownColor) (System.Drawing) | MSDN

colorの有効性が確認された上で、Color(color)コンストラクタで作成されたインスタンスが返されます。FromKnownColor - Color.cs

FromName()

public static Color FromName(
    string name
)
Color.FromName メソッド (String) (System.Drawing) | MSDN

システムの色

プロパティ 対象
ActiveBorder アクティブなウィンドウ境界線
 
Highlight 選択された項目の背景色
 
Window クライアント領域の背景色
WindowText クライアント領域のテキストの色
SystemColors クラス (System.Drawing) | Microsoft Learn

すべて静的なプロパティで、SystemColors.WindowTextのように取得できます。

システムカラーの一覧

Windowsの色

プロパティ 対象
   
ProfessionalColors クラス (System.Windows.Forms) | Microsoft Learn

プロパティ

プロパティ
プロパティ 内容
byte A アルファ要素の値
byte R 赤要素の値
byte G 緑要素の値
byte B 青要素の値
Color Empty nullである色
bool IsEmpty trueならば、初期化されていない。Emptyである以外に、未定義の色もこの状態となる IsEmpty - Color.cs
bool IsKnownColor trueならば、定義済みの色
bool IsNamedColor trueならば、名前付きの色
bool IsSystemColor trueならば、システム カラー
     

色の情報の取得

Color color = Color.AliceBlue; // 定義済みの色

string name = color.Name;  // "AliceBlue"
byte red = color.R;        // 240

int argbVal = color.ToArgb();                // -984833
string argb = Convert.ToString(argbVal, 16); // "fff0f8ff"
Color c1 = Color.Empty;       // Name=0, ARGB=(0, 0, 0, 0)
Color c2 = Color.Transparent; // Name=Transparent, ARGB=(0, 255, 255, 255)

RGB値を指定して作成した色は、そのコードが名前となります。

Color color = Color.FromArgb(0x1, 0x2, 0x3);
string name = color.Name; // "ff010203"

int argbVal = color.ToArgb();                            // -16711165 (0xff010203)
string argb = Convert.ToString(argbVal, 16);             // "ff010203"
string rgb = Convert.ToString(argbVal, 16).Remove(0, 2); // "010203"

メソッド

メソッド 範囲
GetHue() 色相値 (hue value) 0.0-360.0
GetSaturation() 彩度値 (saturation value) 0.0-1.0
GetBrightness() 輝度値 (lightness value)

名前はBrightnessだが、得られるのはHSLのLightnessの値 GetBrightness - Color.cs

0.0-1.0
     
Microsoft Learnから検索