2016-08-08 2 views
-2

Я пытаюсь создать пусковую установку для игры, которая исправляет некоторые из ее ошибок. Сейчас я просто работаю над интерфейсом, и я хочу создавать пользовательские кнопки, а не только эти общие квадраты, но я не могу понять, как это сделать.Как создать пользовательские кнопки в Visual Studio?

Вот несколько примеров изображений.

Regular button, not moused over.

Moused over/Highlighted button.

Я просто бросил эти кнопки вместе быстро, но это то, что я хочу. Я хочу, чтобы кнопка выделялась, когда я наводил на нее курсор, не будучи внутри стандартных квадратов.

+4

Какие технологии вы используете для своей пусковой установки? WPF, WinForms, что-то еще? – ChrisF

+0

WinForms, извините, я не упоминал об этом. – ShadyOrb09

ответ

0

Я использовал коробку изображения, а затем добавил в моих кнопках изображения с прозрачным фоном. Затем добавлено событие клика, ввод мыши и событие оставления мыши.

1

Это можно сделать с помощью специальной кнопки. This demo из MSDN показывает, как переопределить OnPaint и поменять растровые изображения, отвечая на OnMouseDown и OnMouseUp. Чтобы вместо этого изображение было изменено, вместо этого поменяйте растровые изображения на OnEnter и OnLeave.

Вот урезанный пример из связанной страницы:

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); 
    } 
} 
Смежные вопросы