也就是說,
當鼠標點下去后,
在沒有up時,鼠標會移動,那我想在鼠標移動時把鼠標down時的位置和現在移動到的位置上畫一個矩形框,
現在的問題是
由於鼠標在不停地移動,
所以每次鼠標移動后,
如何把已經畫好的短形框在屏幕上消掉,
同時重新畫新的矩形框,
讓用戶在界面上看到的是框在不停地隨着他鼠標的移動而在不斷變化???
9 个解决方案
你是指橡皮矩形吧?由於矩形有一個端點是不變的,因此只要不斷記錄前一個mousemove時cursor的坐標,再使用背景顏色的pen擦除原先矩形並用新坐標值繪制新矩形就可以了
在界面上有一個picurebox,這個picturebox的image是一幅圖。
我想,
當鼠標在picturebox上面拉框時,用一個矩形畫出來。
當鼠標不停地移動時,這個矩形也不停地變化。。。
發現我的回答有筆誤,改在這了。
你可以用ControlPaint.DrawReversableLine 來實現。
原理是call ControlPaint.DrawReversibleLine 可以畫 line
在同一地方再call ControlPaint.DrawReversibleLine 可以把它擦掉而不影響原背景。
鼠標按下時,記下點0,
鼠標移動時記下點1 call ControlPaint.DrawReversableLine to draw frame(點0,點1)
鼠標再移動時記下點2
call ControlPaint.DrawReversableLine for (點0,點1)
call ControlPaint.DrawReversableLine for (點0,點2)
原理就是這樣了。
參考
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWindowsFormsControlPaintClassDrawReversibleLineTopic.asp
希望你能達Net!
好奇心驅使我上msdn搜索了一下,果然查出一篇好文。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaskdr/html/askgui02172004.asp
Dr. GUI 的回答也是建議用ControlPaint因為它最簡單。