我的程式要像小畫家一樣 左鍵點一下(起點) 左鍵再點一下(終點) 連成一條線
2006-10-19 13:56:10 · 3 個解答 · 發問者 B3無名小卒 1 in 電腦與網際網路 ➔ 程式設計
要用MouseUP 而且順便幫我說明一下 不然我看不懂
2006-10-19 14:21:56 · update #1
Dim Xx As Single, Yy As SinglePrivate Sub Form_Load() '剛載入時設定自動重繪有效 AutoRedraw = TrueEnd SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then '若左鍵按下時 '在XY畫一個點 PSet (X, Y) '並記錄XY值 Xx = X: Yy = Y ElseIf Button = 2 Then '若右鍵按下時 '清除整個畫面 Set Picture = Nothing End IfEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) '若左鍵按下並移動滑鼠時 If Button = 1 Then '清除畫面 Cls '畫一條 Xx,Yy ~ X,Y的直線 Line (Xx, Yy)-(X, Y) End IfEnd SubPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) '放開滑鼠左鍵時,把剛畫的線保存起來 If Button = 1 Then Set Picture = ImageEnd Sub
2006-10-19 14:18:31 · answer #1 · answered by W.J.S. 7 · 0⤊ 0⤋
To: 武青楓
您好,多謝您的程式也解決我心中的問題,不過好像似乎跟小畫家仍然有些出入…
小畫家中「畫直線」只需要按著然後拉過去就會出現。
您的雖然也可以達到,但是需要「按一下然後放開」那拉過去並且「再點一下」才可以。(小畫家只要按著拉過去方開即可)
謝謝^^"
2006-10-19 16:42:13 · answer #2 · answered by Hello 2 · 0⤊ 0⤋
要像小畫家一樣畫線,
那麼請留意你用小畫家畫線時的狀態
滑鼠點下後移動位置再放開滑鼠才是一條線,
也就是 MouseDown 為起點, MouseUp 為終點,
滑鼠放開前,起點與滑鼠間會有一條預覽線,
如果要用 MouseUp 且第一次點下為起點,第二次點下為終點,也是可以,
Dim down_up As Integer '記錄第幾次點下用
Dim start_x, start_y As Single '記錄第一次點下時的 x 與 y 座標值
Private Sub Form_Load() '表單載入時的起始設定
down_up = 0 '變數設成 0 代表未開始畫線
Picture1.AutoRedraw = True '自動重繪功能開啟
Picture1.Width = Form1.Width '使picture1 的寬度與 form1 相同
Picture1.Height = Form1.Height '使picture1 的高度與 form1 相同
Picture1.Visible = False '讓 picture1 成為不能看見
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form1.PaintPicture Picture1.Image, 0, 0, Form1.Width, Form1.Height, 0, 0, Form1.Width, Form1.Height
'只要滑鼠移動,就更新 form1,目的在複製 picture1的圖形到 form1
If down_up = 1 Then Form1.Line (start_x, start_y)-(X, Y), RGB(0, 0, 255)
'如果滑鼠有按下過,就畫一條起點到目前滑鼠位置的暫時線段
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If down_up = 0 Then '沒有起點時
start_x = X '記錄起點 x 值
start_y = Y '記錄起點 y 值
down_up = 1 '代表有了起點
Else '否則
Picture1.Line (start_x, start_y)-(X, Y), RGB(0, 0, 255) '在 picture1 中畫上起點與終點連線
down_up = 0 '變數設回 0
Form1.PaintPicture Picture1.Image, 0, 0, Form1.Width, Form1.Height, 0, 0, Form1.Width, Form1.Height
'更新 form1 的顯示
End If
End Sub
2006-10-20 13:00:09 補充:
程式是配合你的題目要求
如果要像小畫家一樣,
則 MouseDown 時記錄起點
MouseMove 時畫暫時預覽線
MouseUp 時在Picture1 畫線
down_up 變數 在 MouseDown 時設為1 MouseUp時設回 0
2006-10-19 15:38:52 · answer #3 · answered by 青楓 2 · 0⤊ 0⤋