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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0804
b画面更新時にペイント13未解決


b

リンク

2015/8/4(Tue) 22:16:13|NO.70473

画面更新時にlineを使用してペイントのようなものを作るにはどうすればよいでしょうか?
新規クリック時の開始地点が0になってしまいます


repeat stick key,256 redraw 0 pos 0,0 repeat length(x) line x.cnt,y.cnt loop if (key & 256){ x.cnt=mousex y.cnt=mousey line x.cnt,y.cnt,mousex,mousey } redraw 1 await loop

(最近Googleでhsp 掲示板を出すとたまにURLが http://hsp.tv/play//pforum.php となって画像が消えたり
掲示板のコンテストに謎の = 文字がある。)



この記事に返信する


リンク

2015/8/4(Tue) 22:55:29|NO.70474

ご提示されているソースは、果てしなく配列が拡張されていくのであんまり
宜しくないと思います。
それはさておき実際にペイントソフトを作ろうとすると問題は山積みですが、
とりあえずこれでご希望の動作をすると思います。

repeat stick key,256 if (key & 256){ line x,y,mousex,mousey x=mousex y=mousey } x=mousex y=mousey await loop



可憐

リンク

2015/8/4(Tue) 22:56:30|NO.70475

これはどうですか?


*mainloop stick key,256 if key = 256 : line x,y,mousex,mousey x=mousex : y=mousey await 5 : goto *mainloop



可憐

リンク

2015/8/4(Tue) 22:57:27|NO.70476

あ・・・先着がいましたね;
すみません;;

ちなみに撃さんと全く同じ処理です><



リンク

2015/8/4(Tue) 22:59:09|NO.70477

連投失礼。
5〜6行目は不要でした。



b

リンク

2015/8/4(Tue) 23:26:48|NO.70478

ソースをくださった方々、ありがとうございます。
ちょっと質問に仕方が悪かったようです。
普通の方法なら画面更新がされず以前の内容が残るのでペインティングできるんですが
redraw ~ boxf ~ redraw という処理が必要だった場合以前の内容が毎回消されるので
画面に描画→画面更新前に記録→画面に描画...という処理が必要になるはずです。
この時のlineの位置指定についての質問です。



b

リンク

2015/8/4(Tue) 23:29:17|NO.70479

一応補足ですが redraw ~ boxf ~ redraw という処理を絶対にしないといけない場合という設定で回答をお願いします。



可憐

リンク

2015/8/5(Wed) 00:03:49|NO.70480

1つ前の動作を記録したいということでしたら
こんな感じで出来ると思うのですが
質問の意図と違ってましたら申し訳ございません



screen 0,300,300 : title "メイン" screen 1,300,300,,ginfo_wx1+305,ginfo_wy1-5 : title "サブ" *mainloop randomize gsel 1 gcopy 0,0,0,300,300 gsel 0 stick key,256 if key = 256 : color rnd(255),rnd(255),rnd(255) : line x,y,mousex,mousey x=mousex : y=mousey wait 80 await 5 : goto *mainloop



暇人

リンク

2015/8/5(Wed) 01:06:47|NO.70482

必要なのは座標なのか
LINEが描かれた画像なのか・・・
画像としてだけ必要ならNO.70480に載せられてるので
これ↓は座標が必要な場合のスクリプト

repeat stick key,256 redraw 0 color 255,255,255 boxf color pos 300,0 mes "line_max="+line_max if (key & 256) { if mlc=0 {//前回クリックされて無いなら mlc=1 //クリック中フラグ x(line_max)=mousex y(line_max)=mousey line_max++ }else{ if (x(line_max-1) ! mousex) or (y(line_max-1) ! mousey) {//前回と座標が違うなら x(line_max)=mousex y(line_max)=mousey line_max++ } } }else{ mlc=0 } pos 0,0 repeat line_max line x.cnt,y.cnt loop redraw 1 await 16 loop



fofo

リンク

2015/8/5(Wed) 02:28:32|NO.70485

> redraw ~ boxf ~ redraw という処理を絶対にしないといけない場合
ということなのでこういうことでしょうか。
boxfは必要ないので使ってないですが。

buffer 1 gsel 0 onclick gosub *draw stop *draw x=mousex y=mousey gsel 1 pos 0,0 gcopy 0,0,0,640,480 gsel 0 repeat stick key,256 if (key&256)=0:break redraw 0 pos 0,0 gcopy 1,0,0,640,480 line x,y,mousex,mousey redraw 1 await 16 loop return



b

リンク

2015/8/5(Wed) 10:41:50|NO.70494

さらにわからなくなってしまったようです。

例えば

celload 画像10枚読み込み repeat redraw 0 color 255,255,255:boxf:color if(i==10){ i=0 } celput i redraw 1 i++ loop
このような画像を10枚読み込んで10枚を毎回連続してパラパラ漫画のように更新することで動画のように見せる処理を入れたとします。
(もしくは

repeat redraw 0:color 255,255,255:boxf:color:pos mousex,mousey:mes "◇◇":redraw 1 await loop
こんなのとか) そして、動いている画像の上にマウスで NO.70474と同じことができないかということです。



b

リンク

2015/8/5(Wed) 10:44:14|NO.70495

>> redraw ~ boxf ~ redraw という処理を絶対にしないといけない場合
これの意味は単純に疑問に思っただけなので redraw ~ boxf ~ redraw という処理無しでの方法は今回はお断りです。ということ



暇人

リンク

2015/8/5(Wed) 21:02:27|NO.70511

既に目的は果たせてると思うんだけど?

dirlist flist,dir_exe+"\\hsptv\\*.jpg",1 if stat<=0 {end} notesel flist repeat notemax noteget fname,cnt celload dir_exe+"\\hsptv\\"+fname gid(cnt)=stat loop repeat stick key,256 redraw 0 pos 0,0 celput gid((cnt/60)\notemax) color 255 pos 300,0 mes "line_max="+line_max if (key & 256) { if mlc=0 {//前回クリックされて無いなら mlc=1 //クリック中フラグ x(line_max)=mousex y(line_max)=mousey line_max++ }else{ if (x(line_max-1) ! mousex) or (y(line_max-1) ! mousey) {//前回と座標が違うなら x(line_max)=mousex y(line_max)=mousey line_max++ } } }else{ mlc=0 } pos 0,0 repeat line_max line x.cnt,y.cnt loop redraw 1 await 16 loop

NO.70480の方法でも同様の事は出来る
透過色を決めて処理する必要があるが・・・



スペース

リンク

2015/8/5(Wed) 21:38:30|NO.70512

うぅ〜ん。コードをちゃんと読んで理解していますか?
ちゃんと理解していれば可憐さんと暇人さんのプログラムで目的は達せられていると思うのですが・・・



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