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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0805
そらパターン塗り2解決


そら

リンク

2012/8/5(Sun) 14:14:03|NO.48118

初心者です。ペイントソフトを作っています。
漫画のようなパターン塗り(その1つとして格子模様)を実装しようとしましたが、思いの外なかなかスムーズに動きません。
またパターン塗りなので、普通にやると重なってしまい、いい方法が思いつきません。
何かアイデアはありませんでしょうか?よろしくお願い致します。


screen 0,256,192 // チェック塗る用 screen 30,200,200 for y,0,25/1,1:for x,0,25/1,1 if (x+y)\2=0:color:else:color 255,255,255 boxf x,y,x+1,y+1 next:next gsel 0 repeat redraw 0 *塗る getkey key,1 if key=1 & mousex\2=0 & mousey\2=0{ pos mousex,mousey:gcopy 30,0,0,5,5 } redraw 1 wait 1 loop



この記事に返信する


てれてれ

リンク

2012/8/5(Sun) 15:16:49|NO.48119

フレーム落ちでマウスの座標が取得出来なかった部分を埋め合わせることで対処出来ます。

screen 0;,256,192 // チェック塗る用 screen 30,200,200 for y,0,25/1,1:for x,0,25/1,1 if (x+y)\2=0:color:else:color 255,255,255 boxf x,y,x+1,y+1 next:next gsel 0 repeat redraw 0 *塗る getkey key,1 if key=1{ pos_n = mousex,mousey if key_t = 0 : key_t = 1 : pos_t = mousex,mousey //最初にキーが押された時に、その座標を保持しておく。 r = atan(mousey - pos_t(1) , mousex - pos_t(0)) //マウスカーソルの [移動前の座標] と [移動後の座標] との角度を求める Dist = 0 //[移動前の座標]と[移動後の座標]の座標との距離を計算 if pos_t(0) != mousex : Dist + powf(abs(pos_t(0)-mousex),2) if pos_t(1) != mousey : Dist + powf(abs(pos_t(1)-mousey),2) Dist = sqrt(Dist) Draw = double(pos_t(0)),double(pos_t(1)) repeat Dist //移動した距離の回数だけ少しずつ座標をずらして描画していく Draw(0) + cos(r) : Draw(1) + sin(r) pos int(Draw(0)/2)*2,int(Draw(1)/2)*2 : gcopy 30,0,0,5,5 // loop pos_t = mousex,mousey //次の描画の際の[移動前の座標]として現在の座標を保持。 }else : key_t = 0 redraw 1 wait 1 loop



そら

リンク

2012/8/6(Mon) 11:34:19|NO.48151

ありがとうございます!解決できました!



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