2011-09-08 46 views
0

在我們的應用程序中,我們在白色表格上有白色按鈕。當鼠標懸停在按鈕上時,我們想要在按鈕上方顯示一個淺藍色的透明矩形。C#Winforms如何在鼠標上的按鈕上畫一個矩形?

我想創建此用戶控件,但我不知道如何執行此操作。我試過谷歌,但我沒有;沒有發現任何可以幫助我的東西,所以我希望你們能指點我正確的方向。

+0

是否要更改背景顏色或例如圍繞文本繪製矩形? – Reniuz

回答

5

您可以從Button導出自己的WinForms控件並覆蓋OnPaint事件。在事件處理程序中,您將擁有一個PaintEventArg參數,其中包含名爲Graphics的屬性。您可以使用此屬性在您控制的位置直接繪製任何您想要的東西。

下面是一個例子直接從MSDN:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.onpaint.aspx

新增:剛剛重新閱讀你的問題,我發現我沒有不正確的回答它。

基本上,您必須重寫兩個事件並添加一個屬性,以顯示您的控件是否應繪製覆蓋的矩形,例如IsDrawRectangle。一旦觸發OnMouseEnter事件,您檢查是否設置了IsDrawRectangle,如果不是,則將其設置爲true並調用this.Invalidate()Invalidate()方法將強制重新繪製控件,然後在OnPaint事件中,您只需再次檢查IsDrawRectangle屬性的值並在需要時繪製矩形。 您還必須重寫OnMouseLeave以將屬性設置爲false,並強制重繪以移除矩形。

加入:如果您需要重新繪製不止一個控件(如果您的矩形覆蓋了需要重新繪製的其他一些控件),然後將您想要重繪的所有內容一個容器並在事件處理程序中調用Parent.Invalidate()方法。

+0

謝謝,但我如何知道鼠標懸停按鈕時,我可以繪製矩形? – Martijn

+0

我剛剛編輯了我的初始回覆以添加此信息。 –

+0

謝謝,我的工作! – Martijn

相關問題