#region Imports
|
|
using DPumpHydr.WinFrmUI.RLT.Util;
|
using DPumpHydr.WinFrmUI.RLT.Util.FoxBase;
|
using System;
|
using System.ComponentModel;
|
using System.Drawing;
|
using System.Drawing.Drawing2D;
|
using System.Drawing.Text;
|
using System.IO;
|
using System.Windows.Forms;
|
|
#endregion
|
|
namespace DPumpHydr.WinFrmUI.RLT.Controls
|
{
|
#region FoxCheckBox
|
|
[DefaultEvent("CheckedChanged")]
|
public class FoxCheckBox : CheckControlBox
|
{
|
private Graphics G;
|
|
private readonly string B64C = "iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQffCxwIKTQpQueKAAAAn0lEQVQI1yXKMU4CQRxG8TczW5nYWRCX+4it1/AUVvacArkGBQkBLmKUkBB3ne/b+VNs9ZKXXwKAOicT8cR3mVejUbo0scpf/NKSypRE7Sr1VReFdgx55D+rE3Wlq0J798SD3qeFqC+6KHR2b9BGoa3e9KPQwUvjgtYKNY0KnfxsVCr84Q+FQsdZGcOQB/ypgxezqhgi3VIr02PDyRgDd6AdcPpYOg4ZAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTExLTI4VDA4OjQxOjUyLTA1OjAwH7rbKgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMS0yOFQwODo0MTo1Mi0wNTowMG7nY5YAAAAASUVORK5CYII=";
|
private readonly string B64U = "iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQffCxwIKir4YIkqAAAAgUlEQVQI122OMQrCQAAENxoMxz3Aj8Y3WAv6jtzVAYPYKah/8AtC5AZdm1TqFss0y6xGseXoxb26yA172iKx5o1JDg4kzMhK9JgnJpMn6uVIwoCn7hx1lmsSplAwyfVJs2Wlr8wlR7qfOYc/Ina8MNnBgTxdeogNg5ubrnLDQFv0AXVYjzifEiowAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTExLTI4VDA4OjQyOjQyLTA1OjAwOCdgtwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMS0yOFQwODo0Mjo0Mi0wNTowMEl62AsAAAAASUVORK5CYII=";
|
|
public Color CheckedBorderColorA { get; set; } = FoxLibrary.ColorFromHex("#C8C8C8");
|
public Color CheckedBorderColorB { get; set; } = FoxLibrary.ColorFromHex("#2A8AC1");
|
public Color UncheckedBorderColorA { get; set; } = FoxLibrary.ColorFromHex("#C8C8C8");
|
public Color UncheckedBorderColorB { get; set; } = FoxLibrary.ColorFromHex("#DC8400");
|
public Color CheckedColor { get; set; } = FoxLibrary.ColorFromHex("#2C9CDA");
|
public Color UncheckedColor { get; set; } = FoxLibrary.ColorFromHex("#FF9500");
|
public Color DisabledCheckedBorderColorA { get; set; } = FoxLibrary.ColorFromHex("#E6E6E6");
|
public Color DisabledCheckedBorderColorB { get; set; } = FoxLibrary.ColorFromHex("#7CA6BF");
|
public Color DisabledCheckedColor { get; set; } = FoxLibrary.ColorFromHex("#7DB7D8");
|
public Color DisabledUncheckedBorderColorA { get; set; } = FoxLibrary.ColorFromHex("#E6E6E6");
|
public Color DisabledUncheckedBorderColorB { get; set; } = FoxLibrary.ColorFromHex("#E2BD85");
|
public Color DisabledUncheckedColor { get; set; } = FoxLibrary.ColorFromHex("#FFCB7C");
|
|
public FoxCheckBox()
|
{
|
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint, true);
|
|
BackColor = Color.Transparent;
|
}
|
|
protected override void OnPaint(PaintEventArgs e)
|
{
|
G = e.Graphics;
|
G.SmoothingMode = SmoothingMode.HighQuality;
|
G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
|
|
if (Enabled)
|
{
|
if (Checked)
|
{
|
using Pen Border = new(CheckedBorderColorA);
|
using SolidBrush Background = new(CheckedColor);
|
using Pen BackBorder = new(CheckedBorderColorB);
|
using Image I = Image.FromStream(new MemoryStream(Convert.FromBase64String(B64C)));
|
G.DrawPath(Border, FoxLibrary.RoundRect(FoxLibrary.FullRectangle(Size, true), 2));
|
|
G.FillPath(Background, FoxLibrary.RoundRect(new Rectangle(5, 5, 17, 17), 2));
|
G.DrawPath(BackBorder, FoxLibrary.RoundRect(new Rectangle(5, 5, 17, 17), 2));
|
|
G.DrawImage(I, new Point(9, 9));
|
}
|
else
|
{
|
using Pen Border = new(UncheckedBorderColorA);
|
using SolidBrush Background = new(UncheckedColor);
|
using Pen BackBorder = new(UncheckedBorderColorB);
|
using Image I = Image.FromStream(new MemoryStream(Convert.FromBase64String(B64U)));
|
G.DrawPath(Border, FoxLibrary.RoundRect(FoxLibrary.FullRectangle(Size, true), 2));
|
|
G.FillPath(Background, FoxLibrary.RoundRect(new Rectangle(Width - 23, 5, 17, 17), 2));
|
G.DrawPath(BackBorder, FoxLibrary.RoundRect(new Rectangle(Width - 23, 5, 17, 17), 2));
|
|
G.DrawImage(I, new Point(Width - 19, 9));
|
}
|
}
|
else
|
{
|
if (Checked)
|
{
|
using Pen Border = new(DisabledCheckedBorderColorA);
|
using SolidBrush Background = new(DisabledCheckedColor);
|
using Pen BackBorder = new(DisabledCheckedBorderColorB);
|
using Image I = Image.FromStream(new MemoryStream(Convert.FromBase64String(B64C)));
|
G.DrawPath(Border, FoxLibrary.RoundRect(FoxLibrary.FullRectangle(Size, true), 2));
|
|
G.FillPath(Background, FoxLibrary.RoundRect(new Rectangle(5, 5, 17, 17), 2));
|
G.DrawPath(BackBorder, FoxLibrary.RoundRect(new Rectangle(5, 5, 17, 17), 2));
|
|
G.DrawImage(I, new Point(9, 9));
|
}
|
else
|
{
|
using Pen Border = new(DisabledUncheckedBorderColorA);
|
using SolidBrush Background = new(DisabledUncheckedColor);
|
using Pen BackBorder = new(DisabledUncheckedBorderColorB);
|
using Image I = Image.FromStream(new MemoryStream(Convert.FromBase64String(B64U)));
|
G.DrawPath(Border, FoxLibrary.RoundRect(FoxLibrary.FullRectangle(Size, true), 2));
|
|
G.FillPath(Background, FoxLibrary.RoundRect(new Rectangle(Width - 23, 5, 17, 17), 2));
|
G.DrawPath(BackBorder, FoxLibrary.RoundRect(new Rectangle(Width - 23, 5, 17, 17), 2));
|
|
G.DrawImage(I, new Point(Width - 19, 9));
|
}
|
}
|
|
base.OnPaint(e);
|
}
|
|
protected override void OnResize(EventArgs e)
|
{
|
base.OnResize(e);
|
Size = new(55, 28);
|
}
|
}
|
|
#endregion
|
}
|