Newer
Older
TBO / TBO / UI / tboTK / Button.cs
using System.Drawing;

namespace TBO.UI.tboTK
{
    class Button : Control
    {
        protected bool hover = false;
        protected bool pressed = false;

        public Button(string id) : base(id)
        {
            Width = 50;
            Height = 50;
        }

        public override void Paint(Graphics g, Rectangle clip)
        {
            if (pressed)
                g.DrawImageKeepRatioEx(Image, 1, 1, Width - 2, Height - 2);
            else
                g.DrawImageKeepRatioEx(Image, 0, 0, Width, Height, hover ? 1f : 0.5f);
        }

        public override void Handle(Event e)
        {
            base.Handle(e);
            if (e.Done)
                return;
            switch (e.Id)
            {
                case Event.EventType.MouseEnter:
                    hover = true;
                    Invalidate();
                    break;
                case Event.EventType.MouseLeave:
                    hover = false;
                    Invalidate();
                    break;
                case Event.EventType.MouseDown:
                    if ((int)e[Event.EventParam.Button] == Event.MouseButtonLeft)
                        pressed = true;
                    Invalidate();
                    break;
                case Event.EventType.MouseUp:
                    if ((int)e[Event.EventParam.Button] == Event.MouseButtonLeft)
                        pressed = false;
                    Invalidate();
                    break;
            }
        }

        public Image Image { get; set; }
    }
}