Я пытаюсь создать кнопку в моем приложении .NET 4.0 Winforms в Visual Studio 2010, которая является ТОЛЬКО изображением.У меня есть окно без полей и фоновое изображение, которое составляет мой собственный скин для этого приложения.Для кнопок закрытия / сворачивания в правом верхнем углу окна я хотел создать 2 простые кнопки, которые представляют собой изображения, которые выглядят как обычные кнопки закрытия / сворачивания Windows.
Возможно, я ошибаюсь в этом дизайнеТак что, если я, пожалуйста, дайте мне знать.До сих пор я решил, что мне нужно создать подкласс для 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.Есть идеи по этому поводу?