我想在Visual Studio 2010中的.NET 4.0 Winforms應用程序中創建一個按鈕,這是一個圖像。我有一個無邊界的窗口,並且有一個背景圖像組成了我的自定義外觀。對於窗口右上角的關閉/最小化按鈕,我想創建2個簡單的按鈕,這些按鈕只有像典型的Windows關閉/最小化按鈕的圖像。在.NET中創建一個圖像按鈕Winforms應用程序
我可能會討論這個設計錯誤,所以如果我請讓我知道。到目前爲止,我已經確定我需要爲Button創建一個只呈現圖像的子類。最終的實現需要爲每個按鈕狀態呈現不同的圖像(正常,懸停,點擊等)。以下是我迄今爲止:
public class ImageButton : Button
{
Pen pen = new Pen(Color.Red, 1.0f);
public ImageButton()
{
SetClientSizeCore(BackgroundImage.Width, BackgroundImage.Height);
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawImage(BackgroundImage, 0, 0);
//e.Graphics.DrawRectangle(pen, ClientRectangle);
//Rectangle bounds = new Rectangle(0, 0, Width, Height);
//ButtonRenderer.DrawButton(e.Graphics, bounds, PushButtonState.Normal);
//base.OnPaint(pevent);
}
protected override void OnPaintBackground(PaintEventArgs e)
{
// Do nothing
}
}
在這一點上,假設這樣的設計是合適的,我需要知道如何適當地調用SetClientSizeCore()。在構造函數中調用它會引發異常。我想這是因爲控制還沒有機會初始化。我不確定重寫哪個函數可以讓我改變我的按鈕的大小,以適應圖像被.NET初始化後的大小。對此有何想法?
就被這個試圖自己,但認識到,一個簡單的解決方法是使用一個PictureBox控件,而不是,因爲它有一個click事件,而且沒有別的,我需要特別從按鈕對象。 – Ted 2012-09-13 13:25:37