Создание кнопки изображения в. Приложение .NET Winforms

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

8
задан void.pointer 25 January 2011 в 16:21
поделиться