こんな感じですかね?
#include "a2d.hsp"
#define ctype RGB(%1, %2, %3) (%1 << 16 | %2 << 8 | %3)
screen 0
pos 0, 0
objsize 100, 20
button gosub "読み込み", *loadImage
pos 100, 0
button gosub "キーカラー選択", *getKeyColor
pos 200, 0
button gosub "保存", *saveImage
stop
*loadImage
dialog "png|jpg|bmp|gif|tiff", 16, ""
if (stat == 1) {
// 画像から仮想イメージ作成
alCreateImageByFile 0, refstr
// スクリーンに描画
gosub *redrawScreen
}
return
*getKeyColor
dialog "", 33
if (stat == 1) {
// キーカラーを保存
keyColor = RGB(ginfo_r, ginfo_g, ginfo_b)
alCopyModeColorKey keyColor, keyColor //今は選択した色のみの透過をしています。上限下限を設定すれば類似色も透過できます。
// スクリーンに描画
gosub *redrawScreen
}
return
*redrawScreen
// スクリーンに描画
gsel 0
redraw 0
color 255, 255, 255
boxf
alCopyImageToScreen 0, 0, 0, 20
redraw 1
return
*saveImage
dialog "png|jpg|bmp|gif|tiff", 17, ""
if (stat == 1) {
// カラーキー反映のためにコピーの画像イメージを作成
alSelectImage 0
alCreateImage 1, alGetWidth(), alGetHeight()
alCopyImageToImage 0, 1
// 保存
alSelectImage 1
switch getpath(refstr, 2)
case ".jpg"
alSaveFile refstr, "image/jpeg"
swbreak
case ".bmp"
alSaveFile refstr, "image/bmp"
swbreak
case ".gif"
alSaveFile refstr, "image/gif"
swbreak
case ".tiff"
alSaveFile refstr, "image/tiff"
swbreak
default
alSaveFile refstr, "image/png"
swbreak
swend
dialog "保存しました:" + refstr + ""
}
return