Pen(ペン)は、図形の線分の部分(輪郭線など)の描画に関する情報を管理するクラスです。また、
Brush(ブラシ)は、図形の内部を塗りつぶすための設定情報を管理するためのクラスです。
描画を行う際には、まずこれらのクラスのインスタンスを作成しておき、それを引数に指定して描画用メソッドを呼び出す、という形になります。
これらのうち、注意したいのは
Brushです。
Penは基本的に1つのクラスだけですが、
Brushは多数のサブクラスが用意されており、それらによって塗りつぶし方が変わってきます。
まずは、これらのインスタンスの作成について整理しておきましょう。ここでは「
SolidBrush」という、単色で塗りつぶすための
Brushについて説明しておきます。
●SolidBrushインスタンスの作成new SolidBrush(《Color》);
●Penインスタンスの作成new Pen(《Color》);
new Pen(《Brush》);
new Pen(《Color》, 幅 );
new Pen(《Brush》, 幅 );
SolidBrushは、引数に色の値である
Color(これはクラスではなくて、
構造体という特殊な値です)を指定して
newします。これにより、指定の色で塗りつぶすための
SolidBrushインスタンスが作成されます。
Penは、
Colorや
Brushを引数に指定することで、その引数で線分を描くための
Penインスタンスを作成します。また第2引数に横幅の数値を指定することで、その幅で線分を描くための
Penを作ることもできます。
●構造体についてこれらのインスタンス作成では、「
Color」という色を示す値が用いられます。これは、「
構造体」という値として用意されています。
構造体は、クラスと同じように内部に様々な値を保管しておくことのできる特別な値です。フィールドやメソッドなどを作成して必要なデータと処理をまとめることができますし、newで値を生成することもできます。構造体の定義も、クラス定義の「
class」の代りに「
struct」というのをつけるだけです。こうした基本部分はクラスと全く同じです。
ただし、クラスのように継承して新しいクラスを作ることはできません。またクラスのように参照として変数に値を保管せず、構造体の値がそのまま変数に保管されます。いわば「オブジェクト指向的な機能が削られたクラス」といったもの、と考えると良いでしょう。
Color構造体の中には、よく用いられる色の値が色名で登録済みになっています。例えば、
Color.Redと指定すれば赤が使われる、というわけです。主な色名はほぼすべて
Color内に用意されていますので、当分は「
Colorの色名を指定して使うのが基本」と考えておくと良いでしょう。