using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace BiskLog_Point_Of_Sale.Classes { [DefaultEvent("Click")] public partial class MagicButton : UserControl { string text; Image image; int wh = 20; float angle = 45; Color top = Color.DarkGreen; Color bottom = Color.DarkKhaki; Color textColor = Color.White; Timer t = new Timer(); public int BorderRadius { get { return wh; } set { wh = value; Invalidate(); } } public Color ColorTop { get { return top; } set { top = value; Invalidate(); } } public Color ColorBottom { get { return bottom; } set { bottom = value; Invalidate(); } } public Image ButtonImage { get { return image; } set { image = value; Invalidate(); } } public string ButtonText { get { return text; } set { text = value; Invalidate(); } } public Color ForeColor1 { get { return textColor; } set { textColor = value; Invalidate(); } } public float Angle { get { return angle; } set { angle = value; Invalidate(); } } public MagicButton() { DoubleBuffered = true; t.Interval = 50; t.Start(); t.Tick += (s, e) => { Angle = Angle % 360 + 1; }; } protected override void OnPaint(PaintEventArgs e) { Graphics graphics = e.Graphics; graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SystemDefault; GraphicsPath graphicsPath = new GraphicsPath(); graphicsPath.AddArc(new Rectangle(0, 0, wh, wh), 180, 90); graphicsPath.AddArc(new Rectangle(Width - wh, 0, wh, wh), -90, 90); graphicsPath.AddArc(new Rectangle(Width - wh, Height - wh, wh, wh), 0, 90); graphicsPath.AddArc(new Rectangle(0, Height - wh, wh, wh), 90, 90); e.Graphics.FillPath(new LinearGradientBrush(ClientRectangle, top, bottom, angle), graphicsPath); base.OnPaint(e); if (image != null) { graphics.DrawImage(image, 10, 5, 24, 24); } StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; graphics.DrawString(ButtonText, Font, new SolidBrush(ForeColor), ClientRectangle, sf); } } }