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, 幅, 高さ ウィンドウIDで指定したウィンドウを描画の対象とする。
gsel ウィンドウID ウィンドウIDの座標(X, Y)から幅と高さの領域の画像を描画の対象となるウィンドウにコピーする。
gcopy ウィンドウ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 |