ペン、直線、および四角形

Windows GDI+ で線を描画するには、 Graphics オブジェクトと Pen オブジェクトを作成する必要があります。 Graphics オブジェクトは、図面を実際に実行するメソッドを提供し、Pen オブジェクトには色、幅、スタイルなどの線の属性が格納されます。 線の描画は、Graphics オブジェクトの DrawLine メソッドを呼び出すことだけです。 Pen オブジェクトのアドレスは、引数の 1 つとして DrawLine メソッドに渡されます。 次の例では、点 (4, 2) から点 (12, 6) に線を描画します。

myGraphics.DrawLine(&myPen, 4, 2, 12, 6);

DrawLineGraphics クラスのオーバーロードされたメソッドであるため、引数を指定する方法はいくつかあります。 たとえば、2 つの Point オブジェクトを構築し、 引数として Point オブジェクトへの参照を DrawLine メソッドに渡すことができます。

Point myStartPoint(4, 2);
Point myEndPoint(12, 6);
myGraphics.DrawLine(&myPen, myStartPoint, myEndPoint);

Pen オブジェクトを作成するときに、特定の属性を指定できます。 たとえば、1 つの Pen コンストラクターを使用すると、色と幅を指定できます。 次の例では、(0, 0) から (60, 30) までの幅 2 の青い線を描画します。

Pen myPen(Color(255, 0, 0, 255), 2);
myGraphics.DrawLine(&myPen, 0, 0, 60, 30);

Pen オブジェクトには、線の特徴を指定するために使用できるダッシュ スタイルなどの属性もあります。 たとえば、次の例では、(100, 50) から (300, 80) までの破線を描画します。

myPen.SetDashStyle(DashStyleDash);
myGraphics.DrawLine(&myPen, 100, 50, 300, 80);

Pen オブジェクトのさまざまなメソッドを使用して、行のさらに多くの属性を設定できます。 Pen::SetStartCap メソッドと Pen::SetEndCap メソッドは、行の末尾の外観を指定します。端は、フラット、四角形、丸み付き、三角形、またはユーザー設定の図形にすることができます。 Pen::SetLineJoin メソッドを使用すると、接続された線をミッター (鋭角の角で結合)、面取り、丸め、またはクリップするかどうかを指定できます。 次の図は、さまざまな先端と結合スタイルの直線を示しています。

丸い端と円形の端、丸い角とマイタの角、2 つの矢印スタイルを示す 2 本の線の図

GDI+ での四角形の描画は、直線の描画と似ています。 四角形を描画するには、 Graphics オブジェクトと Pen オブジェクトが必要です。 Graphics オブジェクトは DrawRectangle メソッドを提供し、Pen オブジェクトには線の幅や色などの属性が格納されます。 Pen オブジェクトのアドレスは、引数の 1 つとして DrawRectangle メソッドに渡されます。 次の使用例は、左上隅が (100、50)、幅 80、高さが 40 の四角形を描画します。

myGraphics.DrawRectangle(&myPen, 100, 50, 80, 40);

DrawRectangleGraphics クラスのオーバーロードされたメソッドであるため、引数を指定する方法はいくつかあります。 たとえば、 Rect オブジェクトを構築し、引数として Rect オブジェクトへの参照を DrawRectangle メソッドに渡すことができます。

Rect myRect(100, 50, 80, 40);
myGraphics.DrawRectangle(&myPen, myRect);

Rect オブジェクトには、四角形に関する情報を操作および収集するためのメソッドがあります。 たとえば、 Inflate メソッドと Offset メソッドは、四角形のサイズと位置を変更します。 Rect::IntersectsWith メソッドは、四角形が別の指定された四角形と交差するかどうかを示し、Contains メソッドは、指定されたポイントが四角形内にあるかどうかを示します。