POLYGON, POLYGON_W

グラフィックス関数:現在のグラフィックス色,論理書き込みモード,線種で多角形を描画します。

モジュールUSE DFLIB

形式

result = POLYGON (control, ppoints, cpoints)
result = POLYGON_W (control, wppoints, cpoints)

control
(入力) INTEGER(2)。塗り潰しフラグ。以下のシンボル定数 (DFLIB.F90 に定義) の 1 つを使うことができます。

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 です。

多角形の境界は,SETCOLORRGBSETWRITEMODE,および SETLINESTYLE でそれぞれ設定される現在のグラフィックス色,論理書き込みモード,および線種で描画されます。POLYGON 関数は,ビューポート座標系 (xycoord 構造型で表される) を使用し,POLYGON_W 関数は,ウィンドウ座標系 (wxycoord 構造型で表される) を使用します。

引数 ppointswppoints は,要素が xycoord または wxycoord 構造型の配列です。各要素は,多角形の頂点の 1 つを指定します。引数 cpoints は,ppoints または wppoints 配列の要素数 (頂点の数) です。

POLYGON は,配列中の要素の順番に頂点間を結んで線を描画することに注意してください。そのため,境界線,骨格図または塗り潰せない他の絵を描画する時,頂点の順番に注意する必要があります。幾つかの頂点間を線で結びたくない場合,絵を交差して描画することを避けるために,同じ線を辿って戻るように頂点を繰り返し,別の頂点に進む必要があります。また,POLYGON は,最後に指定した頂点から最初の頂点に線を引きます。

FLOODFILLRGB を使って多角形を塗り潰す場合,多角形の境界線は実線で描かれていなければなりません。線種は,実線が基本で,SETLINESTYLE で変更することができます。


注意:ここで説明している POLYGON ルーチンは,QuickWin ルーチンです。DFWIN モジュールをインクルードして Win32 SDK バージョンの Polygon ルーチンを使用する場合,MSFWIN$Polygon という名前でルーチンを指定する必要があります。詳細は,「特定の QuickWin と Win32 グラフィックス・ルーチンの特別な名付け規約」を参照してください。

互換性

STANDARD GRAPHICS QUICKWIN GRAPHICS LIB

関連情報

FLOODFILLRGBGRSTATUSLINETORECTANGLESETCOLORRGBSETFILLMASKSETLINESTYLESETWRITEMODE

	! 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