2016-08-08 134 views
-2

我正在嘗試爲修復其一些錯誤的遊戲製作啓動程序。 現在我只是在界面上工作,我想製作自定義按鈕,而不僅僅是那些通用的方塊,但我無法弄清楚如何。如何在Visual Studio中創建自定義按鈕?

下面是一些示例圖像。

Regular button, not moused over.

Moused over/Highlighted button.

我只是把這些按鈕快速在一起,但是這就是我想要的。 我希望按鈕突出顯示,當我將鼠標懸停在上面時,它不在默認的方形按鈕內。

+4

你使用哪種技術爲你的發射器? WPF,WinForms,還有別的? – ChrisF

+0

WinForms,對不起,我沒有提到。 – ShadyOrb09

回答

0

我使用的圖片框,然後在我的按鈕圖片具有透明背景添加。然後添加一個點擊事件,鼠標進入和鼠標離開事件。

1

這可以通過自定義繪製按鈕來完成。來自MSDN的This demo顯示瞭如何覆蓋OnPaint並通過響應OnMouseDownOnMouseUp來交換位圖。爲了讓圖像在懸停時改變,只需在OnEnterOnLeave期間交換位圖。

這裏有一個刪節例如,從鏈接頁面:

public class PictureButton : Control 
{ 
    Image staticImage, hoverImage; 
    bool pressed = false; 

    // staticImage is the primary default button image 
    public Image staticImage 
    { 
     get { 
      return this.staticImage; 
     } 
     set { 
      this.staticImage = value; 
     } 
    } 

    // hoverImage is what appears when the mouse enters 
    public Image hoverImage 
    { 
     get { 
      return this.hoverImage; 
     } 
     set { 
      this.hoverImage = value; 
     } 
    } 

    protected override void OnEnter(EventArgs e) 
    { 
     this.pressed = true; 
     this.Invalidate(); 
     base.OnEnter(e); 
    } 

    protected override void OnLeave(EventArgs e) 
    { 
     this.pressed = false; 
     this.Invalidate(); 
     base.OnLeave(e); 
    } 

    protected override void OnPaint(PaintEventArgs e) 
    { 
     if (this.pressed && this.hoverImage != null) 
      e.Graphics.DrawImage(this.hoverImage, 0, 0); 
     else 
      e.Graphics.DrawImage(this.staticImage, 0, 0); 

     base.OnPaint(e); 
    } 
}