DclShadeRegionはユーザー座標系で多角形の内部に網かけをする. 引数の形はDclDrawLineと同じであるが, DclShadeRegion では指定した点列の始点と終点を結んだ多角形の中を塗りつぶす(左下). 座標点に関してDclShadeRegionに渡したものと同じ引数で折れ線を描いているが, 始点と終点は一致する必要のないことがわかる.
DclShadeRegionで行う網かけのパターンの指定は DclSetShadePatternで指定できる. DclShadeRegionのオプションでパターンを同時に指定することもできる. トーン番号とパターンの対応については, 付表を参照のこと.
DclShadeRegionで指定する多角形は単連結領域である必要はない. 右上のように多角形の辺同志が交差する「ねじれた多角形」でも, その図形によってできる閉領域全てを塗りつぶす.
なお, 何も指定しなければ標準的にはハードフィル (ディバイスに依存した網かけ)を行うようになっている. しかし, ハードフィルができないようなディバイス, あるいは DclSetParmで内部変数ENABLE_SOFTFILLを.TRUE.にすると, ソフトフィルによる網かけをおこなう. ここでは, ハードフィルができないようながデバイスも念頭に置いて, ソフトフィルを陽に指定した.
program shade
use dcl
real :: upx3(3), upy3(3), upx6(6), upy6(6), upxs(61), upys(61)
a = 0.8
th = 3.14159 * 2 / 3
do i=1, 3
upx3(i) = a*sin(th*i)
upy3(i) = a*cos(th*i)
end do
th = 3.14159 * 2 / 6
do i=1, 6
upx6(i) = a*sin(th*i)
upy6(i) = a*cos(th*i)
end do
th = 3.14159 * 4 / 60
do i=1, 61
upxs(i) = a*(i-31) / 30.
upys(i) = a*sin(th*(i-1))
end do
call DclOpenGraphics
call DclSetParm( 'ENABLE_SOFTFILL',.true.) ! <-- ソフトフィルの指定
call DclNewFrame
call DclSetWindow(-1., 1., -1., 1.)
call DclSetViewPort(0., 0.5, 0., 0.5)
call DclSetTransNumber( 1)
call DclSetTransFunction
call DclDrawLine(upx3, upy3)
call DclShadeRegion(upx3, upy3) ! <-- 網かけ (左下)
call DclNewFig
call DclSetWindow(-1., 1., -1., 1.)
call DclSetViewPort(0., 0.5, 0.5, 1.)
call DclSetTransFunction
call DclSetShadePattern(101)
call DclShadeRegion(upx6, upy6) ! <-- 横線 (左上)
call DclNewFig
call DclSetWindow(-1., 1., -1., 1.)
call DclSetViewPort(0.5, 1., 0., 0.5)
call DclSetTransFunction
call DclShadeRegion(upx6, upy6, 201) ! <-- 斜線 (右下)
call DclNewFig
call DclSetWindow(-1., 1., -1., 1.)
call DclSetViewPort(0.5, 1., 0.5, 1.)
call DclSetTransFunction
call DclShadeRegion(upxs, upys, 601) ! <-- 横線 (右上)
call DclCloseGraphics
end program
|
![]() |
|
DclShadeRegion (SGTNU,SGTNZU) |
ユーザー座標系で多角形領域を塗りつぶす. |
|
DclShadeRegionNormalized (SGTNV,SGTNZV) |
正規座標系で多角形領域を塗りつぶす. |
|
DclShadeRegionProjected (SGTNR,SGTNZR) |
透視座標系で多角形領域を塗りつぶす. |
|
DclSetShadePattern (SGSTNP) |
トーンパターン番号を設定する. |
* 括弧の中は、対応するf77インターフェイス名.