| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- using System.Windows.Forms;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- using System.ComponentModel;
-
- namespace FSRemotePowerSwitch {
- public class SButton : CheckBox
- {
- //Fields
- private Color onBackColor = Color.MediumSlateBlue;
- private Color onToggleColor = Color.WhiteSmoke;
- private Color offBackColor = Color.Gray;
- private Color offToggleColor = Color.Gainsboro;
- private bool solidStyle = true;
-
- //Properties
- public Color OnBackColor
- {
- get { return onBackColor; }
- set
- {
- onBackColor = value;
- this.Invalidate();
- }
- }
-
- public Color OnToggleColor
- {
- get { return onToggleColor; }
- set
- {
- onToggleColor = value;
- this.Invalidate();
- }
- }
- public Color OffBackColor
- {
- get { return offBackColor; }
- set
- {
- offBackColor = value;
- this.Invalidate();
- }
- }
- public Color OffToggleColor
- {
- get { return offToggleColor; }
- set
- {
- offToggleColor = value;
- this.Invalidate();
- }
- }
-
- [Browsable(false)]
- public override string Text
- {
- get { return base.Text; }
- set { }
- }
- [DefaultValue(true)]
- public bool SolidStyle
- {
- get { return solidStyle; }
- set
- {
- solidStyle = value;
- this.Invalidate();
- }
- }
- //Constructor
- public SButton()
- {
- this.MinimumSize = new Size(45, 22);
- }
- //Methods
- private GraphicsPath GetFigurePath()
- {
- int arcSize = this.Height - 1;
- Rectangle leftArc = new Rectangle(0, 0, arcSize, arcSize);
- Rectangle rightArc = new Rectangle(this.Width - arcSize - 2, 0, arcSize, arcSize);
-
- GraphicsPath path = new GraphicsPath();
- path.StartFigure();
- path.AddArc(leftArc, 90, 180);
- path.AddArc(rightArc, 270, 180);
- path.CloseFigure();
-
- return path;
- }
-
- protected override void OnPaint(PaintEventArgs pevent)
- {
- int toggleSize = this.Height - 5;
- pevent.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
- pevent.Graphics.Clear(this.Parent.BackColor);
-
- if (this.Checked) //ON
- {
- //Draw the control surface
- if (solidStyle)
- pevent.Graphics.FillPath(new SolidBrush(onBackColor), GetFigurePath());
- else pevent.Graphics.DrawPath(new Pen(onBackColor, 2), GetFigurePath());
- //Draw the toggle
- pevent.Graphics.FillEllipse(new SolidBrush(onToggleColor),
- new Rectangle(this.Width - this.Height + 1, 2, toggleSize, toggleSize));
- }
- else //OFF
- {
- //Draw the control surface
- if (solidStyle)
- pevent.Graphics.FillPath(new SolidBrush(offBackColor), GetFigurePath());
- else pevent.Graphics.DrawPath(new Pen(offBackColor, 2), GetFigurePath());
- //Draw the toggle
- pevent.Graphics.FillEllipse(new SolidBrush(offToggleColor),
- new Rectangle(2, 2, toggleSize, toggleSize));
- }
- }
-
- private void InitializeComponent() {
- this.SuspendLayout();
- this.ResumeLayout(false);
-
- }
- }
-
- public class RoundedButton : Button {
- public RoundedButton() {
- this.BackColor = Color.OrangeRed;
- this.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.FlatAppearance.BorderColor = Color.Black;
- this.FlatAppearance.BorderSize = 1;
- this.Width = 140;
- this.Height = 45;
- }
- public int rdus = 30;
- System.Drawing.Drawing2D.GraphicsPath GetRoundPath(RectangleF Rect, int radius) {
- float r2 = radius / 2f;
- System.Drawing.Drawing2D.GraphicsPath GraphPath = new System.Drawing.Drawing2D.GraphicsPath();
- GraphPath.AddArc(Rect.X, Rect.Y, radius, radius, 180, 90);
- GraphPath.AddLine(Rect.X + r2, Rect.Y, Rect.Width - r2, Rect.Y);
- GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y, radius, radius, 270, 90);
- GraphPath.AddLine(Rect.Width, Rect.Y + r2, Rect.Width, Rect.Height - r2);
- GraphPath.AddArc(Rect.X + Rect.Width - radius,
- Rect.Y + Rect.Height - radius, radius, radius, 0, 90);
- GraphPath.AddLine(Rect.Width - r2, Rect.Height, Rect.X + r2, Rect.Height);
- GraphPath.AddArc(Rect.X, Rect.Y + Rect.Height - radius, radius, radius, 90, 90);
- GraphPath.AddLine(Rect.X, Rect.Height - r2, Rect.X, Rect.Y + r2);
- GraphPath.CloseFigure();
- return GraphPath;
- }
- protected override void OnPaint(PaintEventArgs e) {
- base.OnPaint(e);
- RectangleF Rect = new RectangleF(0, 0, this.Width, this.Height);
- using (System.Drawing.Drawing2D.GraphicsPath GraphPath = GetRoundPath(Rect, rdus)) {
- this.Region = new Region(GraphPath);
- using (Pen pen = new Pen(Color.CadetBlue, 1.75f)) {
- pen.Alignment = System.Drawing.Drawing2D.PenAlignment.Inset;
- e.Graphics.DrawPath(pen, GraphPath);
- }
- }
- }
-
- }
- }
|