スプライトいじりDLL機能追加

2011/2/6追記

今後は、スプライト操作DLLをお使いください。

スプライトいじりDLL - 永字八法の続き。
新しい機能を追加しましたが、あんまり整理できてないままに追加したので、わかりづらいかも。
http://www.eiji8pou.net/download/sp20091012.zip

グラデーション機能を追加しました。

1.まず、適当に塗り潰し長方形のスプライトを作ってください。

lsph 0,":c;>100,100,#FFFFFF",0,0

2.その画像を、上下にグラデーションする長方形に変えます。

exec_dll "sp.dll/0,0,20,255,255,255,0,0,0"
; この例の場合、スプライト番号0(マスク画像なし(0))を20番(グラデーション機能上下)でいじる。一番上は255,255,255の色、一番下は0,0,0の色、その間を自動的にグラデーションで埋める、となる。
exec_dll "sp.dll/0,0,21,255,255,255,0,0,0"
; 20番のかわりに21番でいじると、左から右になる。

オプション
いじる対象のスプライトが、マスク画像つきだった場合、上記のコマンドはマスク画像以外の部分をいじるコマンドになります。
マスク画像の部分をいじりたければ、さらに引数",1"をつけると可能です。

lsph 0,":m>100,100,#000000;>100,100,#FFFFFF",0,0
exec_dll "sp.dll/0,0,20,255,255,255,0,0,0,1"
; マスク画像を加工している。
; 結果、次のprintでこの塗り潰し画像はグラデーション半透明になる。(上の方が透けて、下の方が不透明)

コピー機能を追加しました。

あるスプライトからあるスプライトに、実体部分かマスク部分の全体をコピーします。

exec_dll "sp.dll/0,1,10,1,1,1,0"
; この例の場合、0番のスプライト(マスク画像あり(1))を10番(コピー機能)でいじる。コピー元は1番のスプライト(マスク画像あり(1)で、0番スプライトのマスク部分(1)に、1番スプライトの実体部分(0)をコピーします。

合成機能を追加しました。

あるスプライトの実体部分かマスク部分を選んで、それに別のスプライトをアルファブレンド合成します。

exec_dll "sp.dll/0,1,11,1,1,0"
; この例の場合、0番のスプライト(マスク画像あり(1))を11番(アルファブレンド機能)でいじる。コピー元は1番のスプライト(マスク画像あり(1)で、0番スプライトの実体部分(0)に、1番スプライトをアルファブレンド合成します。

※実体部分をいじると暗幕効果に、マスク部分をいじるとゴースト効果になります。

サンプル

*define
deletemenu
game
*start
bg "back.jpg",0

caption "無加工・暗幕・ゴースト"

; 無加工作成
lsp 0,":a;image.png",0,0
getspsize 0,%0,%1

; 暗幕作成
lsp 1,":a;image.png",(640-%0)/2,0
lsph 3,":a;image.png",0,0
exec_dll "sp.dll/3,1,20,0,0,0,0,0,0,0"
exec_dll "sp.dll/3,1,20,255,255,255,0,0,0,1"
exec_dll "sp.dll/1,1,11,3,1,0"

; ゴースト作成
lsp 2,":a;image.png",640-%0,0
lsph 4,":a;image.png",0,0
exec_dll "sp.dll/4,1,20,255,255,255,255,255,255,0"
exec_dll "sp.dll/4,1,20,0,0,0,255,255,255,1"
exec_dll "sp.dll/2,1,11,4,1,1"

; 表示
print 1
click
end

実際の使用

暗幕作成やゴースト作成は、サンプルからコピペして、サブルーチンにまとめるのがいいかも知れません。
加工のためのグラデーション画像は、同じ大きさの画像を用意するのが一番間違いがありません。グラデーション画像は、初期状態として、加工したい画像をそのまま読み込むのがいいでしょう。