直線を描く
描画を行うには、まず、Graphicsクラスのオブジェクトを作り、そのオブジェクトのメソッドを用います。
Graphics g=CreateGraphics();
ここでは、gがインスタンスになります。
次に、線系の描画を行う場合はPenクラスのオブジェクトを、塗りつぶし系の描画を行う場合は、Brushクラスのオブジェクトを
作成します。
Pen
newpen=new Pen(Color.Black,2); //線幅2の黒色のペン指定
単純な直線を引くには、DrawLineメソッドを使います。
g.DrawLine(newpen,x1,y1,x2,y2);
描画は現在のクライアント領域(デフォルトでは、フォーム上)に行われます。
また、連続直線を引くには、DrawLinesメソッドを使います。
連続直線の頂点座標は、Pointオブジェクトで指定します。
Point[] po={new
Point(x1,y1), new Point(x2,y2), new
Point(x3,y3)};
g.DrawLines(newpen,po);
|
円(楕円)を描く
円を描くには、DrawEllipseメソッドを用います。
g.DrawEllipse(newpen,x1,y1,wid,hei);
//(x1,y1)は円が内接する最小の平行四角形の左上隅座標
//widは 〃 幅
//heiは
〃 高さ
widとheiが異なる場合は楕円となり、扁平率=hei/widとなります。
円の内側を色又はパターンで塗りつぶす場合は、まず、Brushオブジェクトを作成します。
SolidBrush newbrush=new
SolidBrush(Color.Blue);
//ブラシに青色を指定
g.FillEllipse(newpen,x1,y1,wid,hei);
円弧を描く場合は、DrawArcメソッドを用います。
g.DrawArc(newpen,x1,y1,wid,hei,
de1,de2); //de1は描画を開始する角度(degree)、de2は終了する 〃
扇形を描く場合は、DrawPieメソッドを用います。
g.DrawPie(newpen,x1,y1,wid,hei,rad1,rad2);
|
自由曲線を描く
連続直線では、通過する頂点座標をあらかじめ指定しました
が、自由曲線では、制御座標(頂点ではない)を指定し
ます。
制御座標を指定して、曲線を描く関数は数多くありますが、制御座標自体が通過点となるのがスプライン曲線です。
C#のDrawCurveメソッドは、スプライン曲線となります。
Point[]
po={new Point(x1,y1), new Point(x2,y2), new
Point(x3,y3)}
g.DrawCurve(newpen,po);
|
四角形を描く
C#で四角形を描く関数は、DrawRectangleメソッドにな
ります。
g.DrawRectangle(newpen,x1,y1,w,h); //(x1,y1)は四角形の左上隅座
標
//wは 〃 幅
//hは 〃 高さ
|
多角形を描く
多角形を描く関数は、DrawPolygonメソッドになります。
次の例では、3角形が描かれます。
Point[] po={new Point(x1,y1), new Point(x2,y2), new Point(x3,y3)};
g.DrawPolygon(newpen,po);
多角形の内側を塗りつぶすには、FillPolygonメソッドを用います。
g.FillPolygon(newbrush,po);
|
テキストを描く
C#では、BasicでのPrint文のようなメソッドはなく、クライアント領域へのテキストの描画であるDrawStringメソッドを利用します。
Font newfont=new Font("MS明朝",size);// 第1引数はフォント名、第2引数はフォントサイズ
g.DrawString( s, newfont,Brushes.Blue,x,y);
//sは描画するテキスト文字列、x,yは描画領域の左上隅
|
座標変換を行う
C#には、簡易な座標変換メソッドが用意されています。
C#のデフォルトの座標原点は、クライアント領域の左上隅です。この原点を移動するには、TranslateTransformメソッドを利用し
ます。
g.TranslateTransform(x1,y1);
//座標原点を(x1,y1)に移動
座標軸をde度(degree)だけ回転するには、RotateTransformメソッドを利用します。
g.RotateTransform(de);
座標スケールを変換するには、ScaleTransformメソッドを利用します。
g.ScaleTransform(scx,scy); //X軸をscx倍、Y軸をscy倍する
C#でのY軸方向はデフォルトでは下方向を指し示しますので、座標軸方向を反転するには、次のとおりコーディングします。
g.ScaleTransform
(-1,1); //X軸方向の反転
g.ScaleTransform(1,-1); //Y軸方向の反転
|