bufferに画像等を読み込み、それをgcopyでscreenにコピーしましょう。
//マウスでドラッグ選択したところを四角く囲む命令
Dialog "",16,"";
if stat=0:end
buffer 1:picload refstr
screen 0,ginfo_winx,ginfo_winy
gcopy 1,0,0,ginfo_winx,ginfo_winy
太さ=2;線の太さ
onclick gosub *boxjunp
stop
*boxjunp
mouseleftx = mousex
mouselefty = mousey
box
return
#deffunc box
repeat
if mouseleftx<mousex:mx=mousex:mx2=mouseleftx:else:mx2=mousex:mx=mouseleftx;開始地点より右側の時、左側の時で条件分岐
if mouselefty<mousey:my=mousey:my2=mouselefty:else:my2=mousey:my=mouselefty;開始地点より上側の時、下側の時で条件分岐
redraw 0
if cnt!0:pos mx2_bac,my2_bac:gcopy 1,mx2_bac,my2_bac,mx_bac-mx2_bac+1,my_bac-my2_bac+1;前の図形を消す。最初は消す必要が無い為if cnt!0としている。
color 0,0,0:boxf mx2,my2,mx,my;黒い図形を描画
pos mx2+太さ,my2+太さ:gcopy 1,mx2+太さ,my2+太さ,(mx-mx2)-(太さ*2)+1,(my-my2)-(太さ*2)+1;中を白くする。gcopy等に変更する事で、中に画像を表示する事も。
redraw 1
getkey mouseleft, 1
if mouseleft = 0 :break
mx_bac=mx
my_bac=my
mx2_bac=mx2
my2_bac=my2
await 16+(cnt\3!0);平均16.6666ms待機(60fps)
loop
gsel 1:gcopy 0,0,0,ginfo_winx,ginfo_winy;四角も含めた画面をbufferに転送。なくても問題なし
gsel 0
return