滑鼠事件是C#常用的一個事件,在winform中使用次數頻繁。很多人都不明白Mousedown,Mouseup,MouseMove等是什麼含義。 根據Msdn的解釋MouseEnter,MouseHover,MouseMove,MouseLeave是一個系列,分別代表滑鼠進入,懸停,移動,離開的動作。而MouseDown和Mouseup是一個系列代表滑鼠點選的按下和釋放。下面藉助一個繪圖實驗來了解下滑鼠事件的使用方法。
工具/原料
vs2008
方法/步驟
首先新建一個winform窗體,拖動一個picturebox控制元件,把picturebox控制元件作為畫板。
滑鼠事件的操作,用滑鼠繪圖#
定義全域性變數 bool CatchStart = false;
Point DownPoint = Point.Empty;
bitmap originBmp;
滑鼠事件的操作,用滑鼠繪圖#
窗體載入時初始化畫板
int width = this.pictureBox1.Width;
int height = this.pictureBox1.Height;
originBmp = new Bitmap(width, height, PixelFormat.Format32bppRgb);
滑鼠事件的操作,用滑鼠繪圖#
我想畫一個矩形,根據使用習慣,滑鼠左鍵按下去,開始繪畫,左鍵放開,繪畫結束。新增NouseDown事件 ,如果捕捉沒開始,開始捕捉,並記下按下的那個點座標。這裡Mouseup所帶的引數 MouseEventArgs e就是滑鼠事件引數,e的屬性有點選的那個滑鼠和滑鼠的位置。
滑鼠事件的操作,用滑鼠繪圖#
繪製是個連續的過程,涉及到滑鼠移動,同樣新增MouseMove事件,Move事件中,自帶的e引數能反饋滑鼠移動過程中的位置。新增的程式碼如下圖所示。 實時記錄滑鼠的位置,判斷和起始點的相對位置,從而繪製矩形。
滑鼠事件的操作,用滑鼠繪圖#
最後鬆開左鍵,矩形繪製完成,新增MouseUp事件,所加程式碼如圖片所示。
滑鼠事件的操作,用滑鼠繪圖#
最後編譯執行的結果如下圖所示。通過這個繪圖實驗,大致可以瞭解Mousedown,Mouseup和MouseMove啦。
滑鼠事件的操作,用滑鼠繪圖#
注意事項
注意這裡採用了一個雙緩衝技術,是為了防止不斷繪製矩形造成多個矩形的頻閃現象。在上面的註釋中已經對其說明啦。