1章.フルスクリーン画面にBMP画像を単純に表示する(&画面の説明)
1999.4.27

フルスクリーン画面に、BMP画像を単純に表示するプログラムを作ってみます。
以下に基礎となるプログラムを載せますので実行してみてください。
テキストファイルに以下のプログラムを転写したものと、テスト用画像(TEST.BMP)を同一のフォルダに配置し、プログラムを実行します。「ESC」を押す事でプログラムを終了します。


  CH=G@SETUP( 640 , 480 , 16 , 0 )        //画面初期化
  BM=G@CHRLOAD("TEST.BMP")                //画像読み込み
  G@CHRCOPY( BM , CH )                    //画像を画面にコピー
  G@FLIP( )                               //フリップ
  LOOP
    S@WAIT( )                             //システムウェイト
  ENDLOOP

テスト用画像
TEST.BMP



まずは、上記のプログラムを簡単に説明します。
  1. G@SETUP関数で、画面を使用する為の準備を行います。
  2. G@CHRLOAD関数でBMP画像を読み込みます。
  3. G@CHRCOPY関数で読み込んだBMP画像を画面にコピーします。
  4. G@FLIP関数で画面をモニターに表示します。
  5. LOOP〜ENDLOOPは、LOOPとENDLOOPの間をくり返し実行させています。
  6. S@WAITは、システムウェイトを行う。
関数の説明は、マニュアルのそれぞれの説明を参照してください。
画面の考え方もマニュアルを参照してみてください。
参考1>:【画像のDOTの説明】を参照
参考2>:ちょっと高度
G@SETUP関数は、使用する画面のサイズ、色数、モードを指定します。LGPで画面処理を行う場合、必ず一度だけ実行してください。後はBMP画像を読み込んで画面に書いてモニターに表示するだけです。簡単でしょ?
LOOP〜ENDLOOPですが、これは画面の処理にはまったく関係ありません。無くても良いものなので取り去ってもかまいませが、取らないほうが良いです。S@WAIT関数は、ESCキーを押したらプログラムを終了するなどのWindowsとLGPが連絡を取りあう関数であり、LOOP〜ENDLOOPで同関数を繰り返しているのです。つまり、ESCキーが押されるまでプログラムを止めるという機能を実現しており、画像の表示と同時にプログラムを終了してしまう事を防いでいるのです。

ところで、G@CHRCOPY関数でBMP画像を画面にコピーしているのですが、これだけではモニターにはBMP画像は表示されません。モニターに表示させるには、コピー後にG@FLIP関数を実行する必要があります。これには、深い理由があります。一言で言えば「描いている最中を見られたくない」からです。今回のように1枚のBMP画像を表示するならば、描いている時間は一瞬でしょうが、普通ゲームでは何枚ものBMP画像を重ねて描き1コマの画面を完成させている為、直接モニターに描いていると、描いている最中をユーザーに見られる事になり、なんともみっともない状況になってしまいます。そこで、ユーザーには見えないワーク画面に描き、1コマの画面を完成してからモニターに表示する事で、描いている最中をユーザーに見られる事を防いでいます。