C#滑鼠事件的操作,用滑鼠繪圖?

滑鼠事件是C#常用的一個事件,在winform中使用次數頻繁。很多人都不明白Mousedown,Mouseup,MouseMove等是什麼含義。 根據Msdn的解釋MouseEnter,MouseHover,MouseMove,MouseLeave是一個系列,分別代表滑鼠進入,懸停,移動,離開的動作。而MouseDown和Mouseup是一個系列代表滑鼠點選的按下和釋放。下面藉助一個繪圖實驗來了解下滑鼠事件的使用方法。

工具/原料

vs2008

方法/步驟

首先新建一個winform窗體,拖動一個picturebox控制元件,把picturebox控制元件作為畫板。

C#滑鼠事件的操作,用滑鼠繪圖

滑鼠事件的操作,用滑鼠繪圖#

定義全域性變數 bool CatchStart = false;
Point DownPoint = Point.Empty;
bitmap originBmp;

C#滑鼠事件的操作,用滑鼠繪圖

滑鼠事件的操作,用滑鼠繪圖#

窗體載入時初始化畫板

int width = this.pictureBox1.Width;
int height = this.pictureBox1.Height;
originBmp = new Bitmap(width, height, PixelFormat.Format32bppRgb);

C#滑鼠事件的操作,用滑鼠繪圖

滑鼠事件的操作,用滑鼠繪圖#

我想畫一個矩形,根據使用習慣,滑鼠左鍵按下去,開始繪畫,左鍵放開,繪畫結束。新增NouseDown事件 ,如果捕捉沒開始,開始捕捉,並記下按下的那個點座標。這裡Mouseup所帶的引數 MouseEventArgs e就是滑鼠事件引數,e的屬性有點選的那個滑鼠和滑鼠的位置。

C#滑鼠事件的操作,用滑鼠繪圖

滑鼠事件的操作,用滑鼠繪圖#

繪製是個連續的過程,涉及到滑鼠移動,同樣新增MouseMove事件,Move事件中,自帶的e引數能反饋滑鼠移動過程中的位置。新增的程式碼如下圖所示。 實時記錄滑鼠的位置,判斷和起始點的相對位置,從而繪製矩形。

C#滑鼠事件的操作,用滑鼠繪圖

滑鼠事件的操作,用滑鼠繪圖#

最後鬆開左鍵,矩形繪製完成,新增MouseUp事件,所加程式碼如圖片所示。

C#滑鼠事件的操作,用滑鼠繪圖

滑鼠事件的操作,用滑鼠繪圖#

最後編譯執行的結果如下圖所示。通過這個繪圖實驗,大致可以瞭解Mousedown,Mouseup和MouseMove啦。

C#滑鼠事件的操作,用滑鼠繪圖

滑鼠事件的操作,用滑鼠繪圖#

注意事項

注意這裡採用了一個雙緩衝技術,是為了防止不斷繪製矩形造成多個矩形的頻閃現象。在上面的註釋中已經對其說明啦。

事件, 代表, 滑鼠, 次數,
相關問題答案