001 単純な画像の描画

単純に読み込んだビットマップ画像を画面に描画してみます。
下のビットマップを読み込んで


下のようにウィンドウ画面に描画します。横長になっている理由は下で説明します・・・


もっとも簡単なプログラムは以下のようになります。

サンプルプログラム「2d 001」

CH = G@SETUP(640, 480, 16, 1)
B1 = G@CHRLOAD("DATA1.BMP")
LOOP
 G@CHRCLEAR(CH)
 G@CHRCOPY(B1, CH)
 G@FLIP()
ENDLOOP

G@SETUPで横640ドット、縦480ドットで16bitのウィンドウ画面を準備します。関数の戻り値(ここではCHに代入しています)はこのウィンドウ画面を示し、ウィンドウ画面に対して操作を行うときに使用します。
4番目の引数に1を指定するとウィンドウ画面表示となり、0を指定するとフルスクリーン画面となります。

それぞれの画面には制限があります。3番目の引数は画面のカラーモード(16は16ビットカラーを示す)を指定するものですが、ウィンドウ画面では指定は無効となり、デスクトップノカラーモードとなります。フルスクリーン画面では縦横のサイズ、及びカラーモード゙はグラフィックチップが対応する組み合わせのみ指定することができます。

G@CHRLOADでビットマップファイルを読み込みます。関数の戻り値(ここではB1に代入しています)はこの読み込んだビットマップ画像を示し、ビットマップ画像に対して操作を行うときに使用します。

LOOP〜ENDLOOP文は挟んだ間のプログラムを無限ループで繰り返します。

G@CHRCLEARで画面(CH)黒色で塗りつぶして初期化してから、G@CHRCOPYでビットマップ(B1)を画面(CH)にコピー(貼り付け)します。

しかし、これだけでは画面にコピーした画像はモニターに表示されません。モニターに表示させるにはG@FLIPを実行する必要があります。今回は1枚の画像を描画しただけですが、多くの画像を描画する場合、描画をしている過程が見えるのは格好が悪いので、描画を完了した段階でモニターに表示する為の仕組みです。

最後に横長に描画されている理由を説明します。G@CHRCOPYは(後で説明するG@CHRRECTを使用しない限り)コピー元の画像をコピー先の画像にピッタリはまり込む様に拡大縮小を行って貼り付けを行います。ビットマップ画像が正方形なのに対し、画面が横長のため横長に描画されたのです。