49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using ShiftOS.Engine;
|
|
|
|
namespace ShiftOS.Frontend.GUI
|
|
{
|
|
public class Button : TextControl
|
|
{
|
|
public Button()
|
|
{
|
|
TextAlign = TextAlign.MiddleCenter;
|
|
Text = "Click me!";
|
|
}
|
|
|
|
protected override void OnLayout()
|
|
{
|
|
if(AutoSize == true)
|
|
{
|
|
int borderwidth = SkinEngine.LoadedSkin.ButtonBorderWidth * 2;
|
|
|
|
using (var gfx = Graphics.FromImage(new Bitmap(1, 1)))
|
|
{
|
|
var measure = gfx.MeasureString(this.Text, this.Font);
|
|
Width = borderwidth + (int)measure.Width + 16;
|
|
Height = borderwidth + (int)measure.Height + 12;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected override void OnPaint(Graphics gfx)
|
|
{
|
|
Color bgCol = SkinEngine.LoadedSkin.ButtonBackgroundColor;
|
|
Color fgCol = SkinEngine.LoadedSkin.ControlTextColor;
|
|
if (ContainsMouse)
|
|
bgCol = SkinEngine.LoadedSkin.ButtonHoverColor;
|
|
if (MouseLeftDown)
|
|
bgCol = SkinEngine.LoadedSkin.ButtonPressedColor;
|
|
|
|
gfx.Clear(bgCol);
|
|
gfx.DrawRectangle(new Pen(new SolidBrush(fgCol), SkinEngine.LoadedSkin.ButtonBorderWidth), new Rectangle(0, 0, Width, Height));
|
|
base.OnPaint(gfx);
|
|
|
|
}
|
|
}
|
|
}
|