グラフィックス関数:現在のグラフィックス色,論理書き込みモード,線種で多角形を描画します。
モジュール:USE DFLIB
形式
result = POLYGON (control, ppoints, cpoints)
result = POLYGON_W (control, wppoints, cpoints)
control
(入力) INTEGER(2)。塗り潰しフラグ。以下のシンボル定数 (DFLIB.F90 に定義) の 1 つを使うことができます。
$GFILLINTERIOR - 現在の色と塗り潰しマスクを使って実線多角形を塗り潰します。
$GBORDER - 現在の色と線種を使って多角形の境界を描画します。
ppoints
(入力) 構造型 xycoord。ビューポート座標で多角形の頂点を定義する構造型配列。xycoord 構造型 (DFLIB.F90 に定義) は,以下のようになります。
TYPE xycoord INTEGER(2) xcoord INTEGER(2) ycoord END TYPE xycoord
cpoints
(入力) INTEGER(2)。多角形の頂点の数。
wppoints
(入力) 構造型 wxycoord。ウィンドウ座標で多角形の頂点を定義する構造型配列。wxycoord 構造型 (DFLIB.F90 に定義) は,以下のようになります。
TYPE wxycoord REAL(8) wx REAL(8) wy END TYPE wxycoord
結果
結果の型は INTEGER(2) です。何かが描画されれば,結果は非ゼロで,そうでなければ 0 です。
多角形の境界は,SETCOLORRGB,SETWRITEMODE,および SETLINESTYLE でそれぞれ設定される現在のグラフィックス色,論理書き込みモード,および線種で描画されます。POLYGON 関数は,ビューポート座標系 (xycoord 構造型で表される) を使用し,POLYGON_W 関数は,ウィンドウ座標系 (wxycoord 構造型で表される) を使用します。
引数 ppoints と wppoints は,要素が xycoord または wxycoord 構造型の配列です。各要素は,多角形の頂点の 1 つを指定します。引数 cpoints は,ppoints または wppoints 配列の要素数 (頂点の数) です。
POLYGON は,配列中の要素の順番に頂点間を結んで線を描画することに注意してください。そのため,境界線,骨格図または塗り潰せない他の絵を描画する時,頂点の順番に注意する必要があります。幾つかの頂点間を線で結びたくない場合,絵を交差して描画することを避けるために,同じ線を辿って戻るように頂点を繰り返し,別の頂点に進む必要があります。また,POLYGON は,最後に指定した頂点から最初の頂点に線を引きます。
FLOODFILLRGB を使って多角形を塗り潰す場合,多角形の境界線は実線で描かれていなければなりません。線種は,実線が基本で,SETLINESTYLE で変更することができます。
互換性
STANDARD GRAPHICS QUICKWIN GRAPHICS LIB
関連情報
FLOODFILLRGB,GRSTATUS,LINETO,RECTANGLE,SETCOLORRGB,SETFILLMASK,SETLINESTYLE,SETWRITEMODE
例
! QuickWin または Standard Graphics アプリケーションでビルドします。 ! 骨格ボックスを描画します。 USE DFLIB INTEGER(2) status TYPE (xycoord) poly(12) ! 描画する順番でボックスの頂点を設定します。 ! ボックスを横切る不要な点を避けるため,同じ点を繰り返します。 poly(1)%xcoord = 50 poly(1)%ycoord = 80 poly(2)%xcoord = 85 poly(2)%ycoord = 35 poly(3)%xcoord = 185 poly(3)%ycoord = 35 poly(4)%xcoord = 150 poly(4)%ycoord = 80 poly(5)%xcoord = 50 poly(5)%ycoord = 80 poly(6)%xcoord = 50 poly(6)%ycoord = 180 poly(7)%xcoord = 150 poly(7)%ycoord = 180 poly(8)%xcoord = 185 poly(8)%ycoord = 135 poly(9)%xcoord = 185 poly(9)%ycoord = 35 poly(10)%xcoord = 150 poly(10)%ycoord = 80 poly(11)%xcoord = 150 poly(11)%ycoord = 180 poly(12)%xcoord = 150 poly(12)%ycoord = 80 status = SETCOLORRGB(#0000FF) status = POLYGON($GBORDER, poly, INT2(12)) END