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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0211
むしcペイントソフトを作っているのですが4解決


むしc

リンク

2008/2/11(Mon) 14:29:00|NO.13516

何度も質問をしてしまい、すいません。
実は今ペイントソフトを作っているのですが、
ペンを太くする部分で手間取っています。
どうすればいいのですか?教えてください。

*main mx=mousex: my=mousey okey=key: stick key,256,1 if (mx>=30 and mx<=270)and(my>=30 and my<=270) { if key==256 { if (omx!=mx || omy!=my) { if okey==key { color red,green,bleu line omx,omy,mx,my line omx+1,omy,mx+1,my line omx,omy+1,mx,my+1 line omx+1,omy+1,mx+1,my+1 } omx=mx: omy=my } } } wait 1 goto *main
これが今使っているスクリプトです。



この記事に返信する


raisen

リンク

2008/2/11(Mon) 17:00:51|NO.13521

ペンの太さは、GDIを使えば変えられます。自作のGDIモジュールです。
http://web-box.jp/raisen/hsp_net/module.html

標準のlineと違うので、スクリプトに少し工夫が必要です。自分はできましたが。



begriff

リンク

2008/2/11(Mon) 20:12:25|NO.13523

これでできます。
何をしているか簡単に言えば 指定サイズの円を隙間なく線上に描画しているのです。
#define mmousex ginfo(0)-(ginfo(4)+(ginfo(10)-ginfo(12))/2)
#define mmousey ginfo(1)-(ginfo(5)+(ginfo(11)-ginfo(13))-(ginfo(10)-ginfo(12))/2) #module #deffunc LineEx int mx,int my,int omx,int omy,int pen if mx-omx!0{ if abs(1.0*(my-omy)/(mx-omx))>=1{ ly=my:lx=mx:sy=omy:sx=omx if my<omy:ly=omy:lx=omx:sy=my:sx=mx while(flag=0) circle sx+1.0*(y*(mx-omx)/(my-omy))-pen/2,sy+y-pen/2,sx+1.0*(y*(mx-omx)/(my-omy))-pen/2+pen,sy+y-pen/2+pen,1 y+ if y>=ly-sy:y=0:flag=1 wend flag=0 }else{ ly=my:lx=mx:sy=omy:sx=omx if mx<omx:ly=omy:lx=omx:sy=my:sx=mx while(flag=0) circle sx+x-pen/2,sy+1.0*(x*(my-omy)/(mx-omx))-pen/2,sx+x-pen/2+pen,sy+1.0*(x*(my-omy)/(mx-omx))-pen/2+pen,1 x+ if x>=lx-sx:x=0:flag=1 wend flag=0 }}else{ ly=my:lx=mx:sy=omy:sx=omx if my<omy:ly=omy:lx=omx:sy=my:sx=mx while(flag=0) circle sx+1.0*(y*(mx-omx)/(my-omy))-pen/2,sy+y-pen/2,sx+1.0*(y*(mx-omx)/(my-omy))-pen/2+pen,sy+y-pen/2+pen,1 y+ if y>=ly-sy:y=0:flag=1 wend flag=0 } return #global *main //mmousex mmousey 画面内外のマウス位置を求める //LineEx x,y,x,y,ペンサイズ pen=7 mx=mmousex: my=mmousey okey=key: stick key,256,1 if (mx>=30 and mx<=270)and(my>=30 and my<=270) { if key==256 { if (omx!=mx || omy!=my) { if okey==key { color red,green,bleu LineEx mx,my,omx,omy,pen }}}} redraw 1 wait 1 redraw 0 omx=mx: omy=my goto *main



GENKI

リンク

2008/2/12(Tue) 00:30:21|NO.13534




むしc

リンク

2008/2/12(Tue) 18:19:52|NO.13536

GENKIさん、ありがとうございます!
いろいろ試してみます!



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