HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0219
辺見!真琴閉空間の塗りつぶし。5解決


辺見!真琴

リンク

2012/2/19(Sun) 19:13:58|NO.44971

 別環境で作っているエディタに利用しようと、正三角形を
描いてその中を塗りつぶそうとしたのですが、HSP3.3には
閉空間を塗りつぶす命令がないのですね。
paint x,y

みたいな。  矩形や円は付属で塗りつぶしが出来ますが。  出来れば、命令を追加して欲しいです。



この記事に返信する


GENKI

リンク

2012/2/19(Sun) 19:42:14|NO.44973

こんな感じではダメですか?

repeat 15 mes "テストテストテストテストテストテスト" loop color 255,0,0 xa = 100,200,0,100 ya = 0,200,200,0 gsquare -1,xa,ya

最近はグラデーションや半透明、レイヤーが普通に使えますから、指定範囲の同一色の塗りつぶしは今となってはあまり便利な手段では無いです。
実装してもあまり使われないと思います。
どうしても実装したいなら、gmode 4とgcopyをうまく利用するとかなり近いものが作れると思います。
厳密な実装をやるいには1ドットずつ追いかける必要があります。得られる結果は…正直ゲームなんかないは到底利用できないものですが。



kamep

リンク

2012/2/19(Sun) 20:48:18|NO.44977

私はペイントソフトをつくっています。
その中で塗りつぶし処理の命令を自作したので、ここに載せます。
即席でC++(DLL)からHSP用に書き換えたので、改良の余地はあります。
そのまま書くと下に長くなってしまうので、コロンを使って改行を減らしています。
そのためかなり見づらいです。
言っておきますが、このスクリプトですとかなり遅いです。


#module #deffunc paint int px,int py _r=ginfo_r :_g=ginfo_g :_b=ginfo_b cwnt=0 :pget px,py r=ginfo_r :g=ginfo_g :b=ginfo_b dim dx,ginfo_sx*ginfo_sy dim dy,ginfo_sx*ginfo_sy dim dxy,ginfo_sx,ginfo_sy dx(0)=px :dy(0)=py :dxy(px,py)=1 cwnt++ repeat x=dx(cnt) :y=dy(cnt) if x+1<ginfo_sx { if dxy(x+1,y)=0 { dxy(x+1,y)=1 :pget x+1,y if ginfo_r=r and ginfo_g=g and ginfo_b=b { dx(cwnt)=x+1 :dy(cwnt)=y :cwnt++ }}} if 0<=x-1 { if dxy(x-1,y)=0 { dxy(x-1,y)=1 :pget x-1,y if ginfo_r=r and ginfo_g=g and ginfo_b=b { dx(cwnt)=x-1 :dy(cwnt)=y :cwnt++ }}} if y+1<ginfo_sy { if dxy(x,y+1)=0 { dxy(x,y+1)=1 :pget x,y+1 if ginfo_r=r and ginfo_g=g and ginfo_b=b { dx(cwnt)=x :dy(cwnt)=y+1 :cwnt++ }}} if 0<=y-1 { if dxy(x,y-1)=0 { dxy(x,y-1)=1 :pget x,y-1 if ginfo_r=r and ginfo_g=g and ginfo_b=b { dx(cwnt)=x :dy(cwnt)=y-1 :cwnt++ }}} if cnt=cwnt-1 :break loop color _r,_g,_b repeat cwnt pset dx(cnt),dy(cnt) await loop return #global boxf 50,50,200,200 color 255 paint 100,100 dialog "Finish"



暇人

リンク

2012/2/19(Sun) 21:19:18|NO.44979

>閉空間を塗りつぶす命令がないのですね。
こっちは無いが

>正三角形を 描いてその中を塗りつぶそう
指定された三角形なら標準命令でもできる

閉鎖領域内の同色を塗りつぶすなら
API(gdi32)のSelectObject、ExtFloodFillが使えるけど
準備や後始末が必要だから標準命令で欲しいって事?


要望ならもっと分かりやすく書いた方が良いと思う



辺見!真琴

リンク

2012/2/19(Sun) 23:05:32|NO.44981

>GENKI様
>こんな感じではダメですか?

 なるほど。
 4点指定の所を1点重複させるとこんな効果が得られるのですか。
 私の要求はこれで満たせます。 ありがとうございました。
 リファレンスは大体目を通したつもりになっていましたが、
全然応用出来ていませんでしたね。


>最近はグラデーションや半透明、レイヤーが普通に使えますから、
>指定範囲の同一色の塗りつぶしは今となってはあまり便利な手段では無いです。

 そうなのですか・・・。
 私の思考の古さに頭を抱える次第です。
 いや、アドベンチャーゲームのグラフィックがline文描写を経験した世代なもので。


>kamep様
 即席で翻訳出来てしまうモノなのですか・・・スゴイです。


>暇人様
>準備や後始末が必要だから標準命令で欲しいって事?

 他の特定の図形が出来るのに、とまでしか書いていないのに
エスパーして下さって有難うございます。
 と書くと嫌みっぽいですが、私なりの思考で汎用性を考えたまでです。


>要望ならもっと分かりやすく書いた方が良いと思う

 要望タグだけでは意図が伝わりませんでしょうか。



暇人

リンク

2012/2/19(Sun) 23:27:20|NO.44982

> 要望タグだけでは意図が伝わりませんでしょうか。
任意の三角形を塗りつぶしたいのか
閉鎖領域を塗りつぶしたいのか
上が出来るなら下は必要ないのかとか分からないから

NO.44973、NO.44977の二つのレスが付いたんでしょう



ONION software Copyright 1997-2023(c) All rights reserved.