2011-08-22 56 views
0

我有一個名爲「Paint」的按鈕,它應該允許在點擊後在我的圖片框上繪製矩形,即它可以像開關一樣允許繪圖(開/關)。如何從按鈕啓動Picturebox事件

我畫的矩形使用鼠標位置,如這裏解釋:How Can I Capture Mouse Coordinate on PictureBox?。但是,當我移過PictureBox時,繪製矩形。

我如何能實現在那裏繪製必須執行,只有當「畫圖」是「開」 我嘗試從圖片框的事件開始執行的功能:油漆,的MouseDown,MoseMove,鼠標向上...

+1

真的不明白這個問題。你想單擊按鈕,然後可以使用「Mousedown-Move-MouseUp」繪製矩形,或者在點擊按鈕後是否要繪製一個矩形?爲什麼你必須從按鈕中調用鼠標事件是我沒有得到的 – Carsten

+0

我不太確定我是否正確理解了你的問題,但是如果你想單擊一個按鈕來在另一個控件中生成框,爲什麼不獲得圖片框的大小,並取0到寬度和0和高度之間的隨機值,以便生成一個位置,然後生成盒子。您將不得不從屏幕座標轉換到組件座標。 –

+0

「單擊按鈕,然後可以使用」Mousedown-Move-MouseUp「繪製矩形 - 」這就是我想要做的。對不好的描述抱歉。 – Elfoc

回答

2
  1. 在你的應用程序中設置一個標誌(bool),告訴你你是否在繪製模式(可以從你所說的按鈕激活)。
  2. 在鼠標下取鼠標事件處理程序的起點(e.x,e.y)。 現在您有矩形的左上角點。

    3.while鼠標移動需要e.x和e.y,這是右下角的點,繪製矩形。將繪圖代碼放在鼠標移動中,以便它像「繪製」程序那樣繪製(如果繪製標記爲真,則執行此操作)。

  3. 在鼠標向上復位繪製標誌

    5.in在PictureBox的Paint事件繪製所有你必須形狀,這樣,如果你最小化的應用程序窗口,然後最大化它,你會發現你的形狀繪製這可以通過使矩形是一個類並創建它的一些實例來實現(用於在您的形狀上繪製並繪製它)。

0

最簡單的解決方案是添加一個布爾型bDraw變量,僅在點擊按鈕時才變爲TRUE。如果此變量爲FALSE,所有其他繪圖方法都不會執行任何操作。

其他解決方案可以簡單地訂閱 按鈕單擊事件處理程序中的鼠標事件。所以如果按鈕沒有被點擊,則不會發生事件。