9.3 代表的な描画関数

pset 点を打つ

pset(win, x, y)

座標位置 (x, y) に点を打つ。x, y は実数型変数。

drawline 線を引く

drawline(win, x1, y1, x2, y2)

座標位置 (x1, y1) から (x2, y2) に向かって直線を描く。

moveto, lineto 線を引く

moveto(win, x, y)
lineto(win, x, y)

moveto( ), lineto( ) 二つの関数を組み合わせて直線を描画する事ができる。例えば (x1, y1) から (x2, y2) に向けて線を引くときは以下のようにする。

moveto(win, x1, y1);
lineto(win, x2, y2); 

moveto( ) によってペンを移動し、そこから lineto( ) によって指定された位置までペンを運んだ、と考えればよい。
lineto( ) を繰り返して使う事で、連続して直線を描画する事ができる。例えば以下のようにすると、(x1, y1) - (x2, y2) - (x3, y3) をむすぶ折れ線を描く。

moveto(win, x1, y1);
lineto(win, x2, y2);
lineto(win, x3, y3);

drawrect 四角い枠を描く

drawrect(win, x, y, w, h)

座標位置 (x, y) から幅 w、高さ h の四角を描く。x, y, w, h いずれも実数型変数。
例:座標位置 (250, 120) を中心とした幅 20, 高さ 10 の長方形の枠を描く。

x=250.0; y=120.0;
w=20.0; h=10.0;
drawrect(win, x-(w/2.0), y-(h/2.0), w, h);

fillrect なかを塗りつぶした四角を描く

fillrect(win, x, y, w, h)

上に示した drawrect() 関数と使い方は同じ。違いは中を塗りつぶすかどうかだけ。

drawcirc 円を描く

drawcirc(win, x, y, w, h)

座標位置 (x, y) から横方向の半径 w 、高さ方向の半径 h の円を描く。x, y, w, h いずれも実数型変数。
例:座標位置 (250, 120) を中心とした横方向半径 20, 縦方向半径 10 の円を描く。

x=250.0; y=120.0;
w=20.0; h=10.0;
drawcirc(win, x, y, w, h);

fillcirc なかを塗り潰した円を描く

fillcirc(win, x, y, w, h)

座標位置 (x, y) から横方向の半径 w 、高さ方向の半径 h 範囲を円形で塗り潰す。x, y, w, h いずれも実数型変数。
例:座標位置 (250, 120) を中心として横方向半径 20, 縦方向半径 10 で塗り潰す。

x=250.0; y=120.0;
w=20.0; h=10.0;
fillcirc(win, x, y, w, h);

drawarc 円弧を描く

drawarc(win, x, y, w, h, s, e, d)

座標位置 (x, y) から横方向半径 w, 縦方向半径 h の弧を描く。その開始角度は s 度から e 度まで(0-360までの度を与える)。d が 1 なら左回りに描き、-1 なら右回りに描く。x, y, w, h, s, e は実数型変数。dのみ整数型。
例:右回りに 30 度から 60 度の位置に(30度ぶんの開き角となる)扇形を描く。

drawarc(win, x, y, w, h, 30.0, 60.0, -1);

fillarc なかを塗りつぶした円弧(扇形)を描く

fillarc(win, x, y, w, h, s, e, d)

上に示した drawarc() 関数と使い方は同じ。違いは中を塗りつぶすかどうかだけ。

drawpoly 多角形を描く

配列に格納した座標位置を頂点とする多角形を描く。

drawpoly(win, x, y, n)

x, y は多角形のX,Y座標数値をいれた実数型の配列変数であり、n は多角形の辺の数を指定する。
例えば 5 角形を描く場合は、x, y の配列変数を 5 要素確保し、n に 5 を指定する。

double x[5],y[5];
n=5;
x[0]=10.2;  y[0]=22.0;
....
x[4]=123.0; y[4]=48.9;
drawpoly(win, x, y, 5)

類似した fillpoly を用いたサンプルプログラムが fillpoly関数の説明にある。

fillpoly なかを塗りつぶした多角形を描く

上に示した drawpolly() 関数と使い方は同じ。違いは中を塗りつぶすかどうかだけ。

fillpoly(win, x, y, n, i)

x, y は多角形のX,Y座標数値をいれた実数型の配列変数であり、n は多角形の辺の数を指定する。i は整数型で、通常は 0 を指定する。(もし凸型、つまり凹型の凹みが無い)多角形と判っている場合は 1 を指定すると高速に描画できる場合がある。
例えば塗りつぶした 5 角形を描く場合は、x, y の配列変数を 5 要素確保し、n に 5 を指定する。

double x[5],y[5];
n=5;
x[0]=10.2;  y[0]=22.0;
....
x[4]=123.0; y[4]=48.9;
fillpoly(win, x, y, 5, 0)

(資料:サンプルプログラム poly1.c を参考にしてください)

線の幅を指定する

newlinewidth(win, w)

w は整数型で、drawline( ) や drawrect( ) などが図形を描画する際の線の太さを指定する。
初期値は 1 が設定されている。

線の種類を指定する

newlinestyle(win, s)

s は整数型で、drawline( ) や drawrect( ) などが図形を描画する際の線の種類を指定する。
現時点で与える事ができる値は LineSolid (実線) と LineOnOffDash (点線) の二種類。
初期値は LineSolid が設定されている。


Yutaka Yasuda (yasuda@bakkers.gr.jp)