HSPのウィンドウに画像(イメージファイル)を表示するには「picload」命令を使います。対応しているイメージファイル(画像形式)は、bmp(ビットマップ)、gif、jpg、ico(アイコン)の4つです。ファイルのパスの区切りに円記号「\」を2コで「\\」にしています。HSPのスクリプト内ではこのように書かないとパスとして認識されません。(1つ前の講座参照)
pos 100,100
picload "C:\\Program Files\\HSP30a\\docs\\hsp3ttl.jpg",1
stop
上で指定した場所に画像ファイルがない場合はエラーがでます(HSPを導入している環境に合わせて変更して下さい)。通常はスクリプトエディターの下層にあるフォルダであれば、下のようにしておけば問題ないはずです。(相対パス)
pos 100,100
picload "docs\\hsp3ttl.jpg",1
stop
「pos」命令は画像の左上部分の表示位置として指定します。ちなみに、そのまま画像の上に「mes」命令の文字表示ができます。図形も描画させることができます。
pos 100,100
picload "docs\\hsp3ttl.jpg",1
pos 150,150
color $FF
mes "文字だよ〜ん"
上では単純に指定した画像を表示したわけですが、必要な一部分だけ画像をコピーすす場合です。ウィンドウ間の描画を切り取りコピーする「gcopy」命令を使います。この時「gsel」命令を使って操作先のHSPウィンドウを切り替えます。
screen 1
// buffer 1
picload "docs\\hsp3ttl.jpg"
// 描画先をメインのウィンドウID0に切り替え
gsel 0
// ウィンドウID1からコピーしてくる
gcopy 1,50,50,100,100
stop
ウィンドウID1に「buffer」命令で、バッファウィンドウを表示しています。簡単に言ってしまえば裏側で表示される目に見えない非表示ウィンドウです。(ここでは分かるようあえて「screen」命令にしています。)
必要な画像をあらかじめ読み込んでおいて、必要なパーツをそのときに持ってくれば効率いいです。下は、マウスを押してペタペタはってしまうサンプルです。「pos」命令がコピーされる位置です。
// マウスのボタンを押した時に飛ぶラベル指定
onclick *click
// 目にみえないバッファウィンドウ
buffer 1
picload "docs\\hsp3ttl.jpg"
// 描画先をメインウィンドウ0に変更
gsel 0
stop
*click
// mousexとmouseyはマウスの矢印の位置が入ってる
pos mousex,mousey
gcopy 1,50,50,100,100
「gcoy」命令以外にも、HSPでは大きさを拡大/縮小してコピーする「gzoom」命令といういのがあります。
// マウスのボタンを押した時に飛ぶラベル指定
onclick *click
screen 1
picload "sample\\demo\\onibtn.gif"
gsel 0
stop
*click
pos mousex,mousey
; 左クリックなら2倍サイズ
if wparam= 1{
gzoom 136*2,50*2,1,0,0,136,50
}
; 右クリックなら1/2サイズ
if wparam= 2{
gzoom 136/2,50/2,1,0,0,136,50
}