ソースコードのコピペをすると
字下げのタブが消えて、ベターっとなってしまうのですね。。
すみません。。
今度からはタブを全角2つに変換してコピペします。
これまでのはもう・・・(略
2点クリックで直線が書けたら、
よくあるペイントツールのように、ドラッグで線を描きたくなりました。
これもこないだのドラッグのソースをコピペして
ほんのちょっと修正したら動きました。
---
; ドラッグで線を引く
; 線の1点目
dim naPos,2
naPos = 0, 0
*main
stick key,$300
if( key&$100 ){
; ドラッグ開始
; 開始位置を記録
naPos(0) = mousex
naPos(1) = mousey
goto *main2
}
await 15
goto *main
*main2
stick key,$300
if( (key&$100)=0 ){
; ドラッグ終了
goto *main
}
; 線の1点目と現在位置が違っていたら
; 1点目から現在位置まで線を引く
if( (mousex != naPos(0)) or (mousey != naPos(1)) ){
; 違っているから書く
line naPos(0), naPos(1), mousex, mousey
; 次のために、現在位置を記録
naPos(0) = mousex
naPos(1) = mousey
}
await 15
goto *main2
---
ドラッグ中に、直線をこまめに描いてるだけです。
こうなると、
・線の太さを変えるボタンとか
・色をつけるボタンとか
・消すボタンとか
つけたくなるのだけども、
めんどくささが微妙に勝り、実装されることはないのでした。m(_ _)m
よくあるペイントツールのように、ドラッグで線を描きたくなりました。
これもこないだのドラッグのソースをコピペして
ほんのちょっと修正したら動きました。
---
; ドラッグで線を引く
; 線の1点目
dim naPos,2
naPos = 0, 0
*main
stick key,$300
if( key&$100 ){
; ドラッグ開始
; 開始位置を記録
naPos(0) = mousex
naPos(1) = mousey
goto *main2
}
await 15
goto *main
*main2
stick key,$300
if( (key&$100)=0 ){
; ドラッグ終了
goto *main
}
; 線の1点目と現在位置が違っていたら
; 1点目から現在位置まで線を引く
if( (mousex != naPos(0)) or (mousey != naPos(1)) ){
; 違っているから書く
line naPos(0), naPos(1), mousex, mousey
; 次のために、現在位置を記録
naPos(0) = mousex
naPos(1) = mousey
}
await 15
goto *main2
---
ドラッグ中に、直線をこまめに描いてるだけです。
こうなると、
・線の太さを変えるボタンとか
・色をつけるボタンとか
・消すボタンとか
つけたくなるのだけども、
めんどくささが微妙に勝り、実装されることはないのでした。m(_ _)m
たいしたことはないのですが、
いずれ必要になりそうなので、
クリックした2点間に線を引くプログラムを作ってみました。
基本は以前のクリックのと同じです。
---
; クリックした2点間に線を引く
; クリックフラグ [ 1回目のクリック:1 | 2回目のクリック:0 ]
bIsFirstClick = 1
; 1点目座標(x,y)
dim na1Points, 2
na1Points = 0, 0 ; 初期化(0,0)
onclick gosub *WriteLine
stop
*WriteLine
if( bIsFirstClick=1 ){
; 1回目のクリック
; 座標を覚えておくだけ
na1Points(0) = mousex
na1Points(1) = mousey
bIsFirstClick = 0
}else{
; 2回目のクリック
; 1点目から現在のマウス位置に線を引く
line na1Points(0), na1Points(1), mousex, mousey
bIsFirstClick = 1
}
return
---
配列の初期化は、前のRedimの記事で紹介した方法を使ってみました。
ちゃちゃっと作れるようになってきたことにちょっと感動。
いずれ必要になりそうなので、
クリックした2点間に線を引くプログラムを作ってみました。
基本は以前のクリックのと同じです。
---
; クリックした2点間に線を引く
; クリックフラグ [ 1回目のクリック:1 | 2回目のクリック:0 ]
bIsFirstClick = 1
; 1点目座標(x,y)
dim na1Points, 2
na1Points = 0, 0 ; 初期化(0,0)
onclick gosub *WriteLine
stop
*WriteLine
if( bIsFirstClick=1 ){
; 1回目のクリック
; 座標を覚えておくだけ
na1Points(0) = mousex
na1Points(1) = mousey
bIsFirstClick = 0
}else{
; 2回目のクリック
; 1点目から現在のマウス位置に線を引く
line na1Points(0), na1Points(1), mousex, mousey
bIsFirstClick = 1
}
return
---
配列の初期化は、前のRedimの記事で紹介した方法を使ってみました。
ちゃちゃっと作れるようになってきたことにちょっと感動。