プリンタを描画装置として使う精細グラフィックス

 (仮称)十進BASIC最新版ではプリンタを図形出力装置として扱えます。ver.5.3.0では,メタファイルの生成にも対応しました。
 ビットマップを印刷するよりはるかに高精度です。
 プリンタの設定でPostScriptプリンタドライバを指定すれば,EPSファイルを生成することもできます(EPSファイル作成手順)。
Note.
メタファイルは,PLOT LINES文やPLOT AERA文を用いて作られる画像に適します。マンデルブロー集合など,点の集まりとして描かれる画像にはビットマップ形式が適します。

1.プリンタの設定

 プログラムを実行する前にプリンタを設定します。
 オプションメニューで「グラフィックス」を選択し, 「プリンタの設定」をクリックし,プリンタと用紙を選択してください。

2.グラフィックスの実行

 グラフィックスの設定画面で,「画像出力の形式」として「メタファイル(サイズ指定)」を選ぶと,指定されたサイズのメタファイルを作成します。解像度は上で設定したプリンタの解像度になります。指定された領域が描画領域になります。

 グラフィックスの設定画面で,「画像出力の形式」として「メタファイル(プリンタ)」を選ぶと,上で設定したプリンタの指定された用紙の印刷可能領域を描画装置とみなしてメタファイルを作成します。以下に述べる文を用いて変更を加えない場合は,描画領域は印刷可能領域の左下側に確保できる最大の正方形です。
 プリンタドライバ既定の余白に対し,さらに余白を追加することができます。また,BASIC標準の正方形領域を使いたいときは,印刷位置を上寄せに指定することも可能です。

 プログラムの実行が終わると図のようなプレビュー画面が現れます。この画面で,実行結果を印刷すること,EMFファイルとして保存すること,クリップボードにコピーすることができます。クリップボードを経由すると,MS-Wordなどのアプリケーションにメタファイル形式の画像として貼り付けることができます。

3.追加された命令

 次のFull BASIC命令を追加しました。詳細はJISを参照してください。
SET VIEWPORT
SET DEVICE WINDOW
SET DEVICE VIEWPORT
ASK VIEWPORT
ASK DEVICE WINDOW
ASK DEVICE VIEWPORT
SET CLIP
ASK CLIP

☆ DEVICE VIEWPORTの単位はメートルです。

3.例

(1) 描画領域の縦横比変更

 次のプログラムでは,用紙を縦に用いることを前提として,描画領域の横:縦を3:4に変更しています。

140 SET DEVICE WINDOW 0, 3/4, 0, 1
150 SET VIEWPORT      0, 3/4, 0, 1
160 SET WINDOW  -3, 3,  -4, 4
170 DRAW grid
180 DEF f(x)=x*(x-1)*(x+1)
190 FOR x=-3 TO 3 STEP 0.002
200    PLOT LINES: x,f(x);
210 NEXT x
220 END

解説
 横:縦が3:4の領域を描画に用いるために,140行と150行のように 0, 3/4, 0, 1 をパラメータとするSET DEVICE WINDOW文とSET VIEWPORT文を実行します。
横長の場合,たとえば,縦:横=3:4にしたいときは,
140 SET DEVICE WINDOW 0, 1, 0, 3/4
150 SET VIEWPORT 0, 1, 0, 3/4
とします。

(2) 余白の追加

 DEVICE VIEWPORTを縮めることで上下左右の余白を増やすことができます。

120 ASK DEVICE VIEWPORT dvleft,      dvright,      dvbottom,      dvtop
130 SET DEVICE VIEWPORT dvleft+0.01, dvright-0.01, dvbottom+0.01, dvtop-0.01

の2行を上のプログラムに追加すると,上下左右の余白が1cmずつ増えます。グラフィックスの設定画面で余白を10mmに設定するのは,上のコードをあらかじめ実行しておくことに相当します。

(3) サイズ指定

 幅w(mm),高さh(mm)(h<w)の画像を得たいときは,

ASK DEVICE VIEWPORT dvleft, dvright,         dvbottom, dvtop
SET DEVICE VIEWPORT dvleft, dvleft + w/1000, dvbottom, dvbottom + h/1000
SET DEVICE WINDOW 0, 1, 0, h/w
SET VIEWPORT      0, 1, 0, h/w

とします。w<hのときは,下の2行を
SET DEVICE WINDOW 0, w/h, 0, 1
SET VIEWPORT 0, w/h, 0, 1
とします。

4.補足

(1) ASK DEVICE SIZE w,h,s$
   w,hは数値変数名,s$は文字列変数名
  印字可能面の幅をwに,高さをhに,"METERS"をs$に代入する。
  幅と高さの単位はメートル。

(2) 次の命令は意味のある数値を返します。単位はピクセル。
 ASK PIXEL SIZE

(3) 次の命令は-1を返します。例外状態にならないので注意。
 ASK PIXEL VALUE
 ASK PIXEL ARRAY

(4) 次の命令を実行すると例外状態になります。
 GET POINT
 LOCATE POINT

(5) 画像形式がプリンタ(直接)のときにCLEAR文を実行すると,改頁します。
画像形式がメタファイル(プリンタ)のとき,CLEAR文は描画領域を背景色(色指標0に指定した色)に塗リつぶします(印刷しても改ページしません)。

5.廃止予定の命令(規格外)

SET AXIS COLOR 数値式
 軸を描く命令(DRAW GRID, DRAW AXES)で用いる色の色指標を変更する。
 軸を黒で描きたいときは
SET AXIS COLOR 1
を実行してください。
この文は,将来,文法を変更する可能性があります。

6.Ver. 5.0.0からの変更点

 DEVICE SIZE, DEVICE VIEWPORTの単位をメートルに修正しました。

7.Ver. 5.0.8からの変更点

line widthの初期値を1に,axis colorの初期値を15(画面に出力するときと同じ値)に変更しました。 


戻る