.NETのSystem.Drawing名前空間にあるSystemColorsクラスに定義されている名前付きの色を列挙して一覧表示するサンプルです。
SystemColorsクラスには、コントロールの背景色や、ウィンドウの前景色などのシステムで使用する33種類のカラーが用意されています。
本記事では、SystemColorsクラスに定義されている色の名前、RGB値、HTMLカラーコードをリスト形式で表示します。
SystemColorsクラスに定義されている色
SystemColorsクラスには以下の33色が、名前付きの色として定義されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
// 概要: アクティブなウィンドウの境界線の色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (180, 180, 180) HTMLカラーコード: [#B4B4B4] を表すColorオブジェクトを返します。 public static Color ActiveBorder { get; } // 概要: ウィンドウのクライアント領域の背景色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (255, 255, 255) HTMLカラーコード: [#FFFFFF] を表すColorオブジェクトを返します。 public static Color Window { get; } // 概要: スクロール バーの背景色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (200, 200, 200) HTMLカラーコード: [#C8C8C8] を表すColorオブジェクトを返します。 public static Color ScrollBar { get; } // 概要: メニューのテキストの色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (0, 0, 0) HTMLカラーコード: [#000000] を表すColorオブジェクトを返します。 public static Color MenuText { get; } // 概要: フラットなメニューとして表示されるときにフラットメニューの項目の強調表示に使用する色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (0, 120, 215) HTMLカラーコード: [#0078D7] を表すColorオブジェクトを返します。 public static Color MenuHighlight { get; } // 概要: メニュー バーの背景色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (240, 240, 240) HTMLカラーコード: [#F0F0F0] を表すColorオブジェクトを返します。 public static Color MenuBar { get; } // 概要: メニューの背景色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (240, 240, 240) HTMLカラーコード: [#F0F0F0] を表すColorオブジェクトを返します。 public static Color Menu { get; } // 概要: ツールヒントのテキストの色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (0, 0, 0) HTMLカラーコード: [#000000] を表すColorオブジェクトを返します。 public static Color InfoText { get; } // 概要: ツールヒントの背景色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (255, 255, 225) HTMLカラーコード: [#FFFFE1] を表すColorオブジェクトを返します。 public static Color Info { get; } // 概要: 非アクティブなウィンドウのタイトル バー内のテキストの色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (0, 0, 0) HTMLカラーコード: [#000000] を表すColorオブジェクトを返します。 public static Color InactiveCaptionText { get; } // 概要: 非アクティブなウィンドウのタイトル バーの背景色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (191, 205, 219) HTMLカラーコード: [#BFCDDB] を表すColorオブジェクトを返します。 public static Color InactiveCaption { get; } // 概要: 非アクティブなウィンドウの境界線の色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (244, 247, 252) HTMLカラーコード: [#F4F7FC] を表すColorオブジェクトを返します。 public static Color InactiveBorder { get; } // 概要: ホット トラッキング項目の指定に使用する色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (0, 102, 204) HTMLカラーコード: [#0066CC] を表すColorオブジェクトを返します。 public static Color HotTrack { get; } // 概要: 構造体を選択した項目のテキストの色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (255, 255, 255) HTMLカラーコード: [#FFFFFF] を表すColorオブジェクトを返します。 public static Color HighlightText { get; } // 概要: 構造体を選択した項目の背景色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (0, 120, 215) HTMLカラーコード: [#0078D7] を表すColorオブジェクトを返します。 public static Color Highlight { get; } // 概要: ウィンドウ フレームの色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (100, 100, 100) HTMLカラーコード: [#646464] を表すColorオブジェクトを返します。 public static Color WindowFrame { get; } // 概要: 淡色のテキストの色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (109, 109, 109) HTMLカラーコード: [#6D6D6D] を表すColorオブジェクトを返します。 public static Color GrayText { get; } // 概要: アクティブなウィンドウのタイトル バーの色グラデーションの最も明るい色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (185, 209, 234) HTMLカラーコード: [#B9D1EA] を表すColorオブジェクトを返します。 public static Color GradientActiveCaption { get; } // 概要: デスクトップの色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (0, 0, 0) HTMLカラーコード: [#000000] を表すColorオブジェクトを返します。 public static Color Desktop { get; } // 概要: 3D要素のテキストの色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (0, 0, 0) HTMLカラーコード: [#000000] を表すColorオブジェクトを返します。 public static Color ControlText { get; } // 概要: 3D要素の強調表示色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (255, 255, 255) HTMLカラーコード: [#FFFFFF] を表すColorオブジェクトを返します。 public static Color ControlLightLight { get; } // 概要: 3D要素のライトの色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (227, 227, 227) HTMLカラーコード: [#E3E3E3] を表すColorオブジェクトを返します。 public static Color ControlLight { get; } // 概要: 3D要素の暗い影の色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (105, 105, 105) HTMLカラーコード: [#696969] を表すColorオブジェクトを返します。 public static Color ControlDarkDark { get; } // 概要: 3D要素の影の色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (160, 160, 160) HTMLカラーコード: [#A0A0A0] を表すColorオブジェクトを返します。 public static Color ControlDark { get; } // 概要: 3D要素の表面の色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (240, 240, 240) HTMLカラーコード: [#F0F0F0] を表すColorオブジェクトを返します。 public static Color Control { get; } // 概要: 3D要素の影の色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (160, 160, 160) HTMLカラーコード: [#A0A0A0] を表すColorオブジェクトを返します。 public static Color ButtonShadow { get; } // 概要: 3D要素の強調表示色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (255, 255, 255) HTMLカラーコード: [#FFFFFF] を表すColorオブジェクトを返します。 public static Color ButtonHighlight { get; } // 概要: 3D要素の表面の色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (240, 240, 240) HTMLカラーコード: [#F0F0F0] を表すColorオブジェクトを返します。 public static Color ButtonFace { get; } // 概要: アプリケーション ワークスペースの色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (171, 171, 171) HTMLカラーコード: [#ABABAB] を表すColorオブジェクトを返します。 public static Color AppWorkspace { get; } // 概要: アクティブなウィンドウのタイトル バーにテキストの色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (0, 0, 0) HTMLカラーコード: [#000000] を表すColorオブジェクトを返します。 public static Color ActiveCaptionText { get; } // 概要: アクティブなウィンドウのタイトル バーの背景色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (153, 180, 209) HTMLカラーコード: [#99B4D1] を表すColorオブジェクトを返します。 public static Color ActiveCaption { get; } // 概要: 非アクティブなウィンドウのタイトル バーの色グラデーションの明るい色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (215, 228, 242) HTMLカラーコード: [#D7E4F2] を表すColorオブジェクトを返します。 public static Color GradientInactiveCaption { get; } // 概要: ウィンドウのクライアント領域内のテキストの色を表すColor構造体のオブジェクトです。 // 戻り値: RGB値: (0, 0, 0) HTMLカラーコード: [#000000] を表すColorオブジェクトを返します。 public static Color WindowText { get; } |
サンプルコード
WindowsフォームアプリケーションのフォームにDataGridViewコントロールを配置して、システムカラーの一覧を取得してリストに表示します。
作成するWindowsフォームのプログラムコードは以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; using System.Windows.Forms; // System.Reflectionのusingを追加 using System.Reflection; namespace ColorCodeList { public partial class SystemColorsListForm : Form { // コンストラクタ public SystemColorsListForm() { InitializeComponent(); // データグリッドビューのアンカーを設定 this.dataGridView.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right; // フォームロードイベントを設定 this.Load += ColorCodeListForm_Load; } // フォームロード private void ColorCodeListForm_Load(object sender, EventArgs e) { try { // カラーリストを作成するメソッドを呼び出す this.MakeColorList(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } // カラーリストを作成 private void MakeColorList() { // Color構造体の型(Type)オブジェクトを取得する Type type = typeof(SystemColors); // Color構造体のプロパティ(色の一覧)を取得する PropertyInfo[] propertyInfos = type.GetProperties(BindingFlags.Public | BindingFlags.Static); // 色の一覧からColorオブジェクトのコレクションを取得する IEnumerable<Color> colors = propertyInfos.Select(prop => Color.FromName(prop.Name)); // ColorItemのコレクションを作成する IEnumerable<ColorItem> ColorItems = colors.Select(color => new ColorItem { Name = color.Name, RGB = $"{color.R}, {color.G}, {color.B}", Html = string.Format("#{0:X2}{1:X2}{2:X2}", color.R, color.G, color.B) }); // データグリッドビューのデータソースに設定 this.dataGridView.DataSource = ColorItems.ToList(); // データグリッドビューの背景色と前景色を設定 List<Color> colorList = colors.ToList(); for (int i = 0; i < colors.Count(); ++i) { Color backColor = colorList[i]; byte r = (byte)(255 - backColor.R); byte g = (byte)(255 - backColor.G); byte b = (byte)(255 - backColor.B); Color foreColor = Color.FromArgb(r,g,b); this.dataGridView["Name", i].Style.BackColor = backColor; this.dataGridView["Name", i].Style.ForeColor = foreColor; } } // カラーアイテムクラス private class ColorItem { public string Name { get; set; } public string RGB { get; set; } public string Html { get; set; } } } } |
TypeクラスのGetPropertiesプロパティをリフレクションで参照し、SystemColorsクラスに定義されているプロパティからColor構造体の一覧を取得します。
取得した一覧をDataGridViewコントロールに表示するデータのコレクションに変換して、DataGridViewクラスのDataSourceプロパティに設定します。
Reflectionを使用してColor構造体の一覧をDataGridViewコントロールに表示する処理の詳細については、以下の記事も参考にしてください。
プログラムを実行
プログラムを実行します。
システムカラーの一覧がDataGridViewコントロールに表示されます。
今回の記事ではSystemColorsクラスに定義されているシステムカラーの一覧を取得しましたが、.NET Frameworkおよび.NET Coreには、システムカラー以外に、赤(Red)、青(Blue)、緑(Green)などを含む174色を参照するためのオブジェクトも用意されています。
システムカラーを含む名前が定義されているすべての色を取得する方法については、以下の記事にまとめていますので、参考にしてみてください。