C# の Color
構造体は、色を表現するために定義されている型です。どの名前空間の Color
構造体について知りたいかによって、若干定義と使い方が異なりますが、一般的には以下のいずれかを指していることが多いです。
System.Drawing.Color
構造体 (Windows Forms, GDI+ などで使用)System.Windows.Media.Color
構造体 (WPF で使用)
ここでは、より一般的な System.Drawing.Color
構造体を中心に解説し、必要に応じて System.Windows.Media.Color
構造体との違いにも触れます。
System.Drawing.Color
構造体の定義
System.Drawing.Color
構造体は、色を構成する要素(赤、緑、青、アルファ)や、よく使われる定義済みの色などを保持しています。主なメンバーは以下の通りです。
-
プロパティ:
A
(Byte): アルファ成分 (透明度)。0 (完全に透明) から 255 (完全に不透明) の値を持ちます。R
(Byte): 赤成分。0 から 255 の値を持ちます。G
(Byte): 緑成分。0 から 255 の値を持ちます。B
(Byte): 青成分。0 から 255 の値を持ちます。IsKnownColor
(Boolean): このColor
がKnownColor
列挙体の定義済み色であるかどうかを示す値を取得します。IsEmpty
(Boolean): このColor
構造体が初期化されていないかどうかを示す値を取得します。IsNamedColor
(Boolean): このColor
が名前付きの色 (例: "Red", "Blue") であるかどうかを示す値を取得します。Name
(String): このColor
の名前を取得します (定義済み色の場合)。
-
静的プロパティ (定義済みの色):
Color.Red, Color.Blue, Color.Green, Color.Black, Color.White など、よく使われる色が静的なプロパティとして定義されています。
-
静的メソッド:
FromArgb(int)
: ARGB 値 (32 ビット整数) から新しいColor
構造体を作成します。FromArgb(int, int, int)
: 指定された赤、緑、青の成分 (アルファは既定値の 255) から新しいColor
構造体を作成します。FromArgb(int, int, int, int)
: 指定されたアルファ、赤、緑、青の成分から新しいColor
構造体を作成します。FromName(string)
: 指定された名前の色から新しいColor
構造体を作成します (例:Color.FromName("Yellow")
)。FromKnownColor(KnownColor)
:KnownColor
列挙体の値から新しいColor
構造体を作成します。
System.Windows.Media.Color
構造体の定義 (WPF)
System.Windows.Media.Color
構造体も基本的な役割は同じですが、名前空間が異なり、いくつかの点で System.Drawing.Color
と異なります。
- プロパティ:
A
(Byte): アルファ成分。R
(Byte): 赤成分。G
(Byte): 緑成分。B
(Byte): 青成分。
- 静的プロパティ (定義済みの色):
Colors.Red
,Colors.Blue
,Colors.Green
,Colors.Black
,Colors.White
など、Colors
クラスの静的プロパティとして定義されています。 - 静的メソッド:
FromArgb(byte, byte, byte, byte)
: アルファ、赤、緑、青の成分から新しいColor
構造体を作成します。FromRgb(byte, byte, byte)
: 赤、緑、青の成分 (アルファは既定値の 255) から新しいColor
構造体を作成します。FromScRgb(float, float, float, float)
: ScRGB 値 (0.0 から 1.0 の浮動小数点数) から新しいColor
構造体を作成します。
Color
構造体の使い方
Color
構造体は、主に以下のような場面で使用されます。
- 描画処理: 図形やテキストの色を指定する際に使用します (例: ペンの色、ブラシの色、背景色など)。
- UI デザイン: ユーザーインターフェース要素の色を設定する際に使用します (例: ボタンの色、テキストの色など)。
具体的な使用例 (System.Drawing.Color
を想定)
-
定義済みの色を使用する:
C#using System.Drawing; public class Example { public static void Main(string[] args) { Color redColor = Color.Red; Color blueColor = Color.Blue; Color backgroundColor = Color.White; Console.WriteLine($"Red: R={redColor.R}, G={redColor.G}, B={redColor.B}, A={redColor.A}"); Console.WriteLine($"Blue: R={blueColor.R}, G={blueColor.G}, B={blueColor.B}, A={blueColor.A}"); Console.WriteLine($"Background: R={backgroundColor.R}, G={backgroundColor.G}, B={backgroundColor.B}, A={backgroundColor.A}"); } }
-
RGB 値を指定して色を作成する:
C#using System.Drawing; public class Example { public static void Main(string[] args) { // 赤成分 255、緑成分 128、青成分 0 のオレンジ色 Color orangeColor = Color.FromArgb(255, 128, 0); Console.WriteLine($"Orange: R={orangeColor.R}, G={orangeColor.G}, B={orangeColor.B}, A={orangeColor.A}"); } }
-
ARGB 値を指定して色を作成する (透明度を含む):
C#using System.Drawing; public class Example { public static void Main(string[] args) { // 半透明の青色 (アルファ値 128) Color translucentBlue = Color.FromArgb(128, 0, 0, 255); Console.WriteLine($"Translucent Blue: R={translucentBlue.R}, G={translucentBlue.G}, B={translucentBlue.B}, A={translucentBlue.A}"); } }
-
色の名前から色を作成する:
C#using System.Drawing; public class Example { public static void Main(string[] args) { Color yellowColor = Color.FromName("Yellow"); Console.WriteLine($"Yellow: R={yellowColor.R}, G={yellowColor.G}, B={yellowColor.B}, A={yellowColor.A}"); } }
-
グラフィック処理での使用例 (Windows Forms):
C#using System.Drawing; using System.Windows.Forms; public class MyForm : Form { public MyForm() { this.Text = "Color Example"; this.Paint += new PaintEventHandler(MyForm_Paint); } private void MyForm_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; SolidBrush redBrush = new SolidBrush(Color.Red); g.FillRectangle(redBrush, 10, 10, 100, 50); // 赤色の四角形を描画 Pen bluePen = new Pen(Color.Blue, 3); g.DrawEllipse(bluePen, 120, 10, 80, 50); // 青色の円を描画 } public static void Main(string[] args) { Application.Run(new MyForm()); } }
System.Windows.Media.Color
の使用例 (WPF)
WPF で Color
を使用する場合も基本的な考え方は同じですが、名前空間が System.Windows.Media
になり、定義済みの色は Colors
クラスからアクセスします。
using System.Windows.Media;
public class WpfExample
{
public static void Main(string[] args)
{
Color redColor = Colors.Red;
Color greenColor = Color.FromRgb(0, 255, 0); // RGB で作成
Color translucentYellow = Color.FromArgb(128, 255, 255, 0); // ARGB で作成
Console.WriteLine($"Red (WPF): R={redColor.R}, G={redColor.G}, B={redColor.B}, A={redColor.A}");
Console.WriteLine($"Green (WPF): R={greenColor.R}, G={greenColor.G}, B={greenColor.B}, A={greenColor.A}");
Console.WriteLine($"Translucent Yellow (WPF): R={translucentYellow.R}, G={translucentYellow.G}, B={translucentYellow.B}, A={translucentYellow.A}");
}
}
どちらの Color
構造体を使うべきか
使用するテクノロジーによって、適切な Color
構造体が異なります。
- Windows Forms や GDI+ を使用している場合:
System.Drawing.Color
を使用します。 - WPF を使用している場合:
System.Windows.Media.Color
を使用します。
これらの違いを理解し、使用している環境に合わせて適切な Color
構造体を利用してください。
0 件のコメント:
コメントを投稿