[DRAW] コマンド
グラフィック描画サブコマンド列により、図形を描画します。
文法 DRAW <文字列式>
文例 DRAW "D50R50U50L50"
DRAW "C7T150, 50Z=COLNO;"
DRAWでは、複数のグラフィック描画サブコマンドを使い図形を描きます。
<文字列式>内に指定可能なグラフィック描画サブコマンドは次の書式です。
[<修飾子>] <識別子> [<パラメータ1>] [, <パラメータ2>]・・・・
(1) 修飾子
<修飾子>としては、Bおよび Nを指定することができます。<修飾子>は<識別子>の補助的な役
割をするもので、次のとうりです。
B <識別子>で示されるサブコマンドの実行(描画)は実際には実行せず、LP(最終参照点)
のみをサブコマンド実行後の値とします。
N <識別子>で示されるサブコマンドの実行後、LPを (0, 0) にリセットします。
なお、Bおよび Nを同時に指定した場合は、 <識別子>で示されるサブコマンドの実行(描画)
は実際には実行せず、LPを (0, 0)にリセットします。
(2) 識別子とパラメータ
<識別子>は、いろいろな描画機能を表すもので、英字1文字のサブコマンドで指定します。
<パラメータ1> , <パラメータ2>は、各サブコマンドに対応した数値定数または変数で、以下
の形式で指定します。
<数値定数> [;]
または、
= <変数>
数値定数として指数形式は使用禁止です。また16進数表記で数値定数を表す場合には、その後
に必ず、セミコロン(;)を付けねばなりません。
変数を指定する場合は、その直前に等号(=)を、さらに、その直後にはセミコロン(;)を付けねば
なりません。
<識別子>に指定するサブコマンドとその<パラメータ>について以下に説明します。
いずれもDRAWコマンド内でのみ有効なもので、WORLDな設定(たとえばパレット番号)
を変えるものではありません。
A <パラメータ1>
グラフィック描画サブコマンドの現座標系を決めます。
<パラメータ1>に 0〜3 の値を指定しますが、いずれを指定しても右方向に x軸、
下方向に y軸をとり、原点は画面の左上とします。右下は (639, 399) です。
初期状態は<パラメータ1>は 0です。
C <パラメータ1>
DRAWコマンドで描画される図形のパレット番号を規定します。 <パラメータ1>にパレット番
号を指定します。初期状態では、<パラメータ1>の値はフォアグランドカラーとなっています。
これはDRAWコマンドでのみ有効なもので、COLORコマンドのフォアグランドカラーを変えるもの
ではありません。[COLOR(1)] 、[COLOR(2)] 参照。
D <パラメータ1>
LP(グラフィックの最終参照点)から、現座標系の y軸に沿って
<パラメータ1> * <スケール値> の値分だけ正の方向に移動した点まで直線を描画します。
<スケール値> については後述のSサブコマンドを参照。
E <パラメータ1>
LP(グラフィックの最終参照点)から、現座標系の x軸に沿って
<パラメータ1> * <スケール値> の値分だけ正の方向に、
さらに y軸に沿って<パラメータ1> * <スケール値> の
値分だけ負の方向に移動した点まで移動した点まで直線を描画します。
F <パラメータ1>
LP(グラフィックの最終参照点)から、現座標系の x軸に沿って
<パラメータ1> * <スケール値> の値分だけ負の方向に、
さらに y軸に沿って<パラメータ1> * <スケール値> の
値分だけ負の方向に移動した点まで移動した点まで直線を描画します。
G <パラメータ1>
LP(グラフィックの最終参照点)から、現座標系の x軸に沿って
<パラメータ1> * <スケール値> の値分だけ負の方向に、
さらに y軸に沿って<パラメータ1> * <スケール値> の
値分だけ正の方向に移動した点まで移動した点まで直線を描画します。
H <パラメータ1>
LP(グラフィックの最終参照点)から、現座標系の x軸に沿って
<パラメータ1> * <スケール値> の値分だけ正の方向に、
さらにY軸に沿って<パラメータ1> * <スケール値> の
値分だけ正の方向に移動した点まで移動した点まで直線を描画します。
L <パラメータ1>
LP(グラフィックの最終参照点)から、現座標系の x軸に沿って
<パラメータ1> * <スケール値> の値分だけ負の方向に
移動した点まで直線を描画します。
M <パラメータ1>, <パラメータ2>
LP(グラフィックの最終参照点)から、
(X, Y) =(<パラメータ1>, <パラメータ2>)の
点まで直線を描画します。
P [<パラメータ1>]
LP(グラフィックの最終参照点)を含み、<パラメータ1>で指定した
パレット番号で描かれた境界線で囲まれた領域を、
Z サブコマンドで指定した色で塗りつぶします。
境界線の色を指定する<パラメータ1>を省略した場合は C サブコマンドで
指定したパレット番号とします。
Q <パラメータ1>, <パラメータ2>
LP(グラフィックの最終参照点)から、現座標系の x軸に沿って
<パラメータ1> * <スケール値> の値分だけ正の方向に、
さらにY軸に沿って<パラメータ2> * <スケール値> の値分だけ
正の方向に移動した点を対角線の頂点とする長方形を描画します。
R <パラメータ1>
LP(グラフィックの最終参照点)から、現座標系の x軸に沿って
<パラメータ1> * <スケール値> の値分だけ
正の方向に移動した点まで直線を描画します。
S <パラメータ1>
グラフィック描画サブコマンドで指定されるLPからの相対位置のパラメータの
スケール値(倍率)を規定します。<パラメータ1>はスケール値を表し、
正の値でなくてはいけない。
尚、初期状態では、<パラメータ1>の値は1 となっています。
T <パラメータ1>, <パラメータ2>
Qサブコマンドと同様にして長方形を描画し、
さらにその内部をZサブコマンドで指定した色で塗りつぶします。
U <パラメータ1>
LP(グラフィックの最終参照点)から、現座標系の y軸に沿って
<パラメータ1> * <スケール値> の値分だけ負の方向に
移動した点まで直線を描画します。
W <パラメータ1>
LP(グラフィックの最終参照点)から、現座標系の x軸に沿って
<パラメータ1> * <スケール値> の値分だけ正の方向に、
さらに y軸に沿って<パラメータ2> * <スケール値> の値分だけ
正の方向に移動した点まで移動した点まで直線を描画します。
X <パラメータ1>
<パラメータ1>で指定される文字変数内の
グラフィック描画サブコマンド列により図形を描画。
文字列変数内に、再び Xサブコマンドを含めることも可能です。
尚、で指定されるLPからの相対位置のパラメータのスケール値(倍率)
を規定します。
<パラメータ1>はスケール値を表し、正の値でなくてはいけない。
尚、<パラメータ1>には、必ず "= <文字変数;>" の形を使用して下さい。
文字変数の後ろにセミコロン ; を忘れないようにしてください。
例えば、
140 DRAW "BE45A2S0.5X=A$;"
Y <パラメータ1>
D, E, F, G, H, L, M, Q, R, U および Wサブコマンドで
描画する直線または長方形のラインスタイルを規定します。
<パラメータ1>は、&H0〜&HFFFF の範囲の整数でなければなりません。
ラインスタイルの内容については、[LINE] を参照して下さい。
尚、初期状態では、<パラメータ1>の値は&HFFFF です。
<パラメータ1>の値は&HF99Fなど16進数で入力のときは
他のサブコマンドと同時に使用しないでください。
10進数のときは他のサブコマンドと同時に使用してかまいません。
例えば、
DRAW "Y&HF9"
DRAW "D50"
これは
DRAW "Y249D50"
と同じです。
Z <パラメータ1>
TおよびPサブコマンドで塗りつぶしをする際の、
塗りつぶしの色またはタイルストリングによる模様を規定します。
<パラメータ1>は、パレット番号またはタイルストリングが
格納されている文字列変数でなければなりません。
ただし、タイルストリングを規定する場合は、
必ず "=<文字変数>" の形でなければなりません。
文字変数の後ろにセミコロン ; を忘れないようにしてください。
例えば、
10 POINT (100,100)
20 t$=CHR$(&HAA)+CHR$(&H55)+CHR$(&HFF)
30 DRAW "z=t$;t150,50"
さらに、初期状態では、 Cサブコマンドにより規定されるパレット番号(Cサブコマンドを実行
していないときはフォアーグラウンドカラー)となっています。
[DRAW]コマンド全体の注意
D, E, F, G, H, L, M, Q, R, T, U および Wサブコマンドの実行では、修飾子として
Nが指定されていない限り、LPは指定された点に移ります。
A, C, P, S, Y および Zサブコマンドの実行では、LPは変化しません。
また、A, C, S, Y および Zサブコマンドの指定は、
指定のあるDRAWだけではなく、以降のDRAWにも引き継がれます。
これらの指定は、[SCREEN] コマンドを実行すると
初期状態に戻ります。
サンプル
10 CLS
20 COLOR ,,,,0
30 SCREEN 0, 0, 0, 1
40 POINT (320,100)
50 A$="C4U60R60D60L60"
60 DRAW A$
70 DRAW "BE45S0.5X=A$;"
80 DRAW "A0BE10P"
900 END
この場合、
20行でカラーモード0 の 8 色中 8 色モードとし、
30行でSCREENを画面モードはカラーモード、画面スイッチは
グラフィックの表示、アクティブページを1ページ、
ディスプレイページを1ページとし、
40行でLPを(320,100)にし、
60〜80行でDRAWします。
60行は描画カラーのパレット番号を 4(GREEN)とし、
(320,100)->(320,40)->(380,40)->
(380,100)->(320,100)の順に正方形を描きます。
70行は描画実行はしないで、
E45によりLPを(320,100)->(365,55)に変え、
スケール値=0.5にし、A$の文字列に従い描画します。
GREEN で
(365,55)->(365,25)->(395,25)->
(395,55)->(365,55)の順に正方形を描きます。
80行は描画実行はしないで、
E10によりスケール値0.5で、LPを(365,55)->( 370,50)に変え、
このLP点を含むGREENで描かれた正方形領域をGREENで塗りつぶします。