English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

我的程式要像小畫家一樣 左鍵點一下(起點) 左鍵再點一下(終點) 連成一條線

2006-10-19 13:56:10 · 3 個解答 · 發問者 B3無名小卒 1 in 電腦與網際網路 程式設計

要用MouseUP 而且順便幫我說明一下 不然我看不懂

2006-10-19 14:21:56 · update #1

3 個解答

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

fedest.com, questions and answers