HSP3 プログラミングの基礎V
前へ 目次へ 次へ 

(2) ウィンドウと画像表示

 特別なことをしなくても、プログラムを実行すると640×480のウィンドウが開く。ここでは、実行時に開くウィンドウのサイズ指定や、画像ファイルをウィンドウに表示する方法について学習する。

 

ウィンドウ

screen ウィンドウID, 幅, 高さ
 幅×高さのウィンドウを初期化して使えるようにする。
 複数のウィンドウを開くことができるので、ウィンドウID(整数0〜)で管理する。

 

サンプル640×480のウィンドウを表示する。

    screen 0, 640, 480      ;ウィンドウ0番、サイズ指定640*480
stop

実行ウィンドウが指定したサイズ(640×480)で表示される。

 プログラムを全部削除して実行しても同じ結果になる。
 また、ウィンドウIDを変えてscreen命令を追加すると、追加した数だけ表示されるウィンドウが増える。

試してみよう開くウィンドウをひとつ追加する。

    screen 0, 640, 480
screen 1, 640, 480      ;ウィンドウ1番、サイズ指定640*480
stop

実行同じサイズ(640×480)のウィンドウが2つ開く。



画像ファイル表示

picload ファイル名, モード
 指定した画像ファイルをウィンドウに表示する。
 モードは、省略または0でウィンドウを初期化して、1で現在のウィンドウにロードして表示する。
 扱える画像ファイルの形式は次の通りである。
拡張子 説明
bmp Windows標準のビットマップ画像データである。
jpg JPEG形式の画像圧縮データである。
gif GIF形式の画像圧縮データである。(アニメーションGIFは除く)
ico Windows標準のアイコン画像データである。

 

サンプルウィンドウに画像を表示する。
 画像データは160×64のサイズでペイントで作成する。ファイル名は gazou1.bmp としてプログラムと同じフォルダに保存する。   gazou1.bmp(31KB)

    screen 0, 640, 480
    picload "gazou1.bmp"    ;画像ファイル読み込み描画
    stop

実行ウィンドウに画像データが表示される。ただし、ウィンドウのサイズが画像データのサイズ(160×64)になる。

試してみようウィンドウのサイズを変えないで画像を表示する。

    screen 0, 640, 480
    picload "gazou1.bmp", 1    ;画像ファイル読み込み描画
    stop

実行ウィンドウに画像データが表示される。ウィンドウのサイズは640×480で変わらない。



仮想ウィンドウと画像

 ゲームなどで、画像データが必要になったときに、毎回ディスクから読み込んでいたのでは、処理が遅くなる。あらかじめ画像データ(ファイル)をメモリに読み込んでおき、必要になったらそこから読み出して表示するのが一般的である。

buffer ウィンドウID, 幅, 高さ
 表示されない仮想ウィンドウを初期化する。
gsel ウィンドウID
 ウィンドウIDで指定したウィンドウを描画の対象とする。
gcopy ウィンドウID, 座標X, 座標Y, 幅, 高さ
 ウィンドウIDの座標(X, Y)から幅と高さの領域の画像を描画の対象となるウィンドウにコピーする。

 

サンプル画像データを仮想ウィンドウに読み込んでおいてからウィンドウに表示する。

    screen 0, 640, 480          ;ウィンドウID 0番(表示される)
    buffer 1                    ;ウィンドウID 1番(表示されない)
    picload "gazou1.bmp"
    gsel 0            ;カレントウィンドウ設定
    gcopy 1, 0, 0, 32, 32
    stop

実行ウィンドウに画像データが表示される。

 screen命令やbuffer命令で最後に初期化されたウィンドウがカレントウィンドウになる。

ウィンドウと仮想ウィンドウ

gcopy 1, 0, 0, 32, 32
画像をコピーする。 ID 1の (0,0)から 32ドットの範囲を

 画像はカレントポジションに表示(コピー)される。カレントポジションの初期値は、(0, 0)でウィンドウの一番左上となっている。

試してみようウィンドウの作成順序を入れ替えるとgsel命令は不要になる。実行結果は同じである。

    buffer 1                    ;ウィンドウID 1番(表示されない)
    picload "gazou1.bmp"
    screen 0, 640, 480          ;ウィンドウID 0番(表示される)
    gcopy 1, 0, 0, 32, 32
    stop

 

サンプル画像データを仮想ウィンドウに読み込んでおいてからウィンドウの指定位置(200, 100)に表示する。

    buffer 1                ;ウィンドウID 1番(表示されない)
    picload "gazou1.bmp"
    screen 0, 640, 480      ;ウィンドウID 0番(表示される)
    pos 200, 100            ;カレントポジションを(200, 100)に設定
    gcopy 1, 0, 0, 32, 32
    stop

実行
 ウィンドウのに画像データが表示される。
 画像データの左上の座標がカレントポジションに表示される。

試してみよう2つの画像データをウィンドウの指定位置(200, 100)と(300, 100)に表示する。

    buffer 1                    ;ウィンドウID 1番(表示されない)
    picload "gazou1.bmp"
    screen 0, 640, 480          ;ウィンドウID 0番(表示される)
    pos 200, 100            ;カレントポジションを(200, 100)に設定
    gcopy 1, 0, 0, 32, 32
    pos 300, 100            ;カレントポジションを(300, 100)に設定
    gcopy 1, 0, 0, 32, 32
    stop

実行ウィンドウのに画像データが2つ表示される。


前へ 目次へ 次へ 
2006  © Hiroshi Masuda 

 

 

inserted by FC2 system