
絵を表示させてみよう -その1-
絵を表示させてみよう -その1-
前回まで、文字や点、線を表示させ、それらに対してアクションをつけてきました。 しかし、文字が表示できたならば、次は絵を表示させてみたいですよね。 絵を表示させるには、CopyBmpというメソッドを使うのですが、メモリやアドレスなどを理解しなければなりませんので、少し段階を追ってやっていきましょう。
ビットイメージをコピー&ペーストする
「macro操師」"ヘルプ"のCopyBmpを参考にしてください。 まず、CopyBmpを使った最も簡単な例を、256X64dotの表示モジュールを使用した場合についてあげてみます。
プログラム15
Sub Start()
Cursor 0 , 0
Cls
SetFont 16X32
KanjiOn
Cursor 0 , 0 '・・・①
Print "晴" '・・・①
Cursor 0 , 4 '・・・②
Print "雨" '・・・②
Cursor 128 , 0 '・・・③
CopyBmp vram , 0 , 4 , 32 , 4 , 8 '・・・④
End Sub
下のような表示がでましたか?
プログラムの仕組み
まず15-①で左上(カーソル位置 0 , 0)に"晴"という文字が表示され、15-②で左上から縦に32dotずれた位置(カーソル位置 0 , 4)に"雨"という文字が表示されます。 ここまでは、前回までにしたことと同じです。
次に15-③でカーソルが左上から横に128dotずれた位置(カーソル位置 128 , 0)に移動します。 この位置にも"雨"という文字が表示されていますよね。 これは15-④でカーソル位置 0 , 4に表示された"雨"という文字をビットイメージとして、コピー&ペーストしているのです。
CopyBmp memory , segment , offset , width , height , y
memoryではコピーするビットイメージがあるメモリを選択します。
・ ramとするとRAM定義済みビットイメージ
・ fromとするとFROM定義済みビットイメージ
・ vramとするとV-RAM内のビットイメージ
をコピーします。
簡単に説明すると、RAMとは電源を切るとデータの消えるメモリで、FROMとは電源を切っても保持されるメモリです。 BmpメモリとマクロメモリはRAMとFROMから構成されているのですが、CopyBmpで使用するメモリはBmpメモリです。 また、V-RAMとは、いわゆる表示メモリのことです。 15-④ではmemoryはvramになっていますから、表示メモリに書き込まれたビットイメージをコピーすることになります。 それをfromとするとFROMから、ramとするとRAMからコピーします。
segmentとoffsetにより、コピーするビットイメージの始まりがどこにあるかを指定します。 例えば、表示メモリ(V-RAM)の例を下図にあげます。
水色の数字がsegment、黄色の文字がoffsestです。 具体的にいうと、表示メモリのアドレスを256で割ったときの商がsegment、余りがoffsetになります。
例えば、上図のピンクで覆った部分をコピーしたいとします。 するとsegmentは0、offsetは243です。 RAM、FROMの場合も同様の考え方でsegmentとoffsetを当てはめることができます。
widthとheightでコピーするビットイメージのサイズを指定します。 widthは1 dot単位、heightは8 dot単位ですので、上図のピンク部分ならば、widthが34、heightが3です。 従って、15-④で指定したビットイメージは下図の位置にあることになります。
yは登録してあるビットイメージの縦(y方向)のサイズです。 表示メモリ(V-RAM)の場合は、ビットイメージの縦のサイズは表示画面と同じに決まっています。 ただし、FROMやRAMの場合は自分で登録するサイズを自由に定義することができるのです。(このことについては、次のページでも触れます。) 15-④はV-RAMからのコピー&ペーストで、縦64dotの場合ですので、yは8になります。
ちなみに、15-④を
CopyBmp vram , 0 , 0 , 32 , 4 , 8
とすると、"晴"という文字がコピー&ペーストされます。