yangyin
2025-03-27 b0de14c2670b9ff0079dacfb4b7457b438368f11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#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
}