我想在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