├── .gitignore
├── Dio
├── Dio.csproj
├── DioButton.cs
├── DioCheckBox.cs
├── DioDefaults.cs
├── DioGroupBox.cs
├── DioLabel.cs
├── DioMarqueeProgressBar.cs
├── DioRadioButton.cs
├── DioTextBox.cs
├── GlobalHelpers.cs
└── Properties
│ └── AssemblyInfo.cs
├── LICENSE
├── MentQ
├── GlobalHelpers.cs
├── MentQ.csproj
├── MentQButton.cs
├── MentQCheckBox.cs
├── MentQDefaults.cs
├── MentQEllipticalProgress.cs
├── MentQGroupBox.cs
├── MentQInfoBox.cs
├── MentQNotification.cs
├── MentQNumericUpDown.cs
├── MentQProgressBar.cs
├── MentQRadioButton.cs
├── MentQTabControl.cs
├── Properties
│ └── AssemblyInfo.cs
└── Styles.cs
├── README.md
├── WinformThemes.sln
├── WinformThemes
├── App.config
├── GlobalHelpers.cs
├── MainForm.Designer.cs
├── MainForm.cs
├── MainForm.resx
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
└── WinformThemes.csproj
├── builds
├── Dio.dll
└── MentQ.dll
├── preview-dio.png
└── preview-mentq.png
/.gitignore:
--------------------------------------------------------------------------------
1 | .vs/
2 | **bin/
3 | **obj/
--------------------------------------------------------------------------------
/Dio/Dio.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {D8AFFCD4-5D23-49B0-930A-9D88D5937BDA}
8 | Library
9 | Properties
10 | Dio
11 | Dio
12 | v4.6.1
13 | 512
14 |
15 |
16 | true
17 | full
18 | false
19 | bin\Debug\
20 | DEBUG;TRACE
21 | prompt
22 | 4
23 |
24 |
25 | pdbonly
26 | true
27 | bin\Release\
28 | TRACE
29 | prompt
30 | 4
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | Component
48 |
49 |
50 | Component
51 |
52 |
53 | Component
54 |
55 |
56 | Component
57 |
58 |
59 | Component
60 |
61 |
62 | Component
63 |
64 |
65 | Component
66 |
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/Dio/DioButton.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Drawing;
4 | using System.Drawing.Drawing2D;
5 | using System.Windows.Forms;
6 |
7 | namespace Dio
8 | {
9 | public class DioButton : Button
10 | {
11 | private readonly Color _downOverlay = Color.FromArgb(70, 0, 0, 0);
12 | private readonly Color _hoverOverlay = Color.FromArgb(45, 35, 35, 35);
13 | private Color _overlapColor = Color.FromArgb(0, 0, 0, 0);
14 |
15 | public DioButton()
16 | {
17 | SetStyle(
18 | ControlStyles.AllPaintingInWmPaint | ControlStyles.CacheText | ControlStyles.DoubleBuffer |
19 | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
20 | ShadowSize = 4;
21 | ShadowColor = DioDefaults.DioDefaultshadowColor;
22 | BackColor = DioDefaults.DefaultBackColor;
23 | ForeColor = DioDefaults.DefaultForeColor;
24 | Font = DioDefaults.DefaultFont;
25 | HandleCreated += (sender, args) => { DoubleBuffered = true; };
26 | }
27 |
28 | [Category("Appearance")]
29 | [Browsable(true)]
30 | [EditorBrowsable(EditorBrowsableState.Always)]
31 | [Bindable(false)]
32 | public int ShadowSize { get; set; }
33 |
34 | [Category("Appearance")]
35 | [Browsable(true)]
36 | [EditorBrowsable(EditorBrowsableState.Always)]
37 | [Bindable(false)]
38 | public Color ShadowColor { get; set; }
39 |
40 | [Category("Appearance")]
41 | [Browsable(true)]
42 | [EditorBrowsable(EditorBrowsableState.Always)]
43 | [Bindable(false)]
44 | public Color BorderColor { get; set; }
45 |
46 | protected override void OnPaint(PaintEventArgs pevent)
47 | {
48 | Graphics g = pevent.Graphics;
49 | g.Clear(Parent.BackColor);
50 | g.SmoothingMode = SmoothingMode.HighQuality;
51 | g.InterpolationMode = InterpolationMode.HighQualityBicubic;
52 | if (ShadowSize > 0)
53 | GlobalHelpers.DrawDownFade(g, new Rectangle(-1, Height - ShadowSize, Width + 1, ShadowSize),
54 | ShadowColor);
55 | using (
56 | SolidBrush backColorBrush = new SolidBrush(BackColor),
57 | foreColorBrush = new SolidBrush(ForeColor),
58 | overlayBrush = new SolidBrush(_overlapColor))
59 | using (Pen borderPen = new Pen(BorderColor))
60 | {
61 | Rectangle clippedBounds = new Rectangle(-1, -1, Width + 2, Height + 2 - ShadowSize);
62 | g.SetClip(new Rectangle(0, 0, Width, Height - ShadowSize + 1));
63 | g.FillRectangle(backColorBrush, clippedBounds);
64 | g.DrawRectangle(borderPen, 0, 0, Width - 1, Height - ShadowSize);
65 | g.FillRectangle(overlayBrush, clippedBounds);
66 | SizeF stringSize = g.MeasureString(Text, Font);
67 | PointF textPosition = new PointF(0, 0);
68 | if (TextAlign == ContentAlignment.MiddleCenter)
69 | textPosition = new PointF((Width - stringSize.Width) / 2,
70 | (Height - stringSize.Height - ShadowSize) / 2);
71 | else if (TextAlign == ContentAlignment.MiddleLeft)
72 | textPosition = new PointF(3, (Height - stringSize.Height - ShadowSize) / 2);
73 | else if (TextAlign == ContentAlignment.MiddleRight)
74 | textPosition = new PointF(Width - 4 - stringSize.Width,
75 | (Height - stringSize.Height - ShadowSize) / 2);
76 | else
77 | throw new NotImplementedException();
78 | g.DrawString(Text, Font, foreColorBrush, textPosition);
79 | }
80 | }
81 |
82 | protected override void OnMouseEnter(EventArgs e)
83 | {
84 | _overlapColor = _hoverOverlay;
85 | Invalidate();
86 | base.OnMouseEnter(e);
87 | }
88 |
89 | protected override void OnMouseUp(MouseEventArgs e)
90 | {
91 | _overlapColor = _hoverOverlay;
92 | Invalidate();
93 | base.OnMouseUp(e);
94 | }
95 |
96 | protected override void OnMouseLeave(EventArgs e)
97 | {
98 | _overlapColor = Color.FromArgb(0, 0, 0, 0);
99 | Invalidate();
100 | base.OnMouseLeave(e);
101 | }
102 |
103 | protected override void OnMouseDown(MouseEventArgs e)
104 | {
105 | _overlapColor = _downOverlay;
106 | Invalidate();
107 | base.OnMouseDown(e);
108 | }
109 |
110 | protected override void OnGotFocus(EventArgs e)
111 | {
112 | _overlapColor = _hoverOverlay;
113 | Invalidate();
114 | base.OnGotFocus(e);
115 | }
116 |
117 | protected override void OnLostFocus(EventArgs e)
118 | {
119 | _overlapColor = Color.FromArgb(0, 0, 0, 0);
120 | Invalidate();
121 | base.OnLostFocus(e);
122 | }
123 |
124 | protected override void OnKeyDown(KeyEventArgs kevent)
125 | {
126 | //Enter does not fire keydown
127 | if (kevent.KeyCode == Keys.Space)
128 | _overlapColor = _downOverlay;
129 | Invalidate();
130 | base.OnKeyDown(kevent);
131 | }
132 |
133 | protected override void OnKeyUp(KeyEventArgs kevent)
134 | {
135 | if (kevent.KeyCode == Keys.Space)
136 | _overlapColor = _hoverOverlay;
137 | base.OnKeyUp(kevent);
138 | }
139 | }
140 | }
--------------------------------------------------------------------------------
/Dio/DioCheckBox.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Drawing;
4 | using System.Drawing.Drawing2D;
5 | using System.Windows.Forms;
6 |
7 | namespace Dio
8 | {
9 | public class DioCheckBox : CheckBox
10 | {
11 | private readonly Color _downOverlay = Color.FromArgb(70, 0, 0, 0);
12 | private readonly Color _hoverOverlay = Color.FromArgb(45, 35, 35, 35);
13 | private Color _overlapColor = Color.FromArgb(0, 0, 0, 0);
14 |
15 | public DioCheckBox()
16 | {
17 | SetStyle(
18 | ControlStyles.AllPaintingInWmPaint | ControlStyles.CacheText | ControlStyles.DoubleBuffer |
19 | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
20 | BackColor = DioDefaults.DefaultBackColor;
21 | ForeColor = DioDefaults.DefaultDarkForeColor;
22 | Font = DioDefaults.DefaultFont;
23 | HandleCreated += (sender, args) => { DoubleBuffered = true; };
24 | AutoSize = true;
25 | }
26 |
27 | [Category("Appearance")]
28 | [Browsable(true)]
29 | [EditorBrowsable(EditorBrowsableState.Always)]
30 | [Bindable(false)]
31 | public Color BorderColor { get; set; }
32 |
33 | public override Size GetPreferredSize(Size proposedSize)
34 | {
35 | return new Size(18 + Convert.ToInt32(Graphics.FromHwnd(Handle).MeasureString(Text, Font).Width), 15);
36 | }
37 |
38 | protected override void OnPaint(PaintEventArgs pevent)
39 | {
40 | Graphics g = pevent.Graphics;
41 | g.Clear(Parent.BackColor);
42 | g.SmoothingMode = SmoothingMode.HighQuality;
43 | g.InterpolationMode = InterpolationMode.HighQualityBicubic;
44 | using (
45 | SolidBrush backColorBrush = new SolidBrush(BackColor),
46 | foreColorBrush = new SolidBrush(ForeColor))
47 | using (Pen foreColorPen = new Pen(Color.FromArgb(100, ForeColor)), overlayPen = new Pen(_overlapColor))
48 | {
49 | g.DrawRectangle(foreColorPen, 0, 0, 14, 14);
50 | g.DrawRectangle(overlayPen, 0, 0, 14, 14);
51 | if (Checked)
52 | {
53 | g.SetClip(new Rectangle(3, 3, 9, 9));
54 | g.FillRectangle(backColorBrush, 2, 2, 10, 10);
55 | using (GraphicsPath path = new GraphicsPath())
56 | {
57 | path.AddPolygon(new[] {new Point(2, 12), new Point(11, 11), new Point(11, 2)});
58 | using (SolidBrush brush = new SolidBrush(Color.FromArgb(50, 20, 20, 20)))
59 | {
60 | g.FillPath(brush, path);
61 | }
62 | }
63 |
64 | g.ResetClip();
65 | }
66 |
67 | g.DrawString(Text, Font, foreColorBrush, 18, (Height - g.MeasureString(Text, Font).Height) / 2);
68 | }
69 | }
70 |
71 | protected override void OnMouseEnter(EventArgs e)
72 | {
73 | _overlapColor = _hoverOverlay;
74 | Invalidate();
75 | base.OnMouseEnter(e);
76 | }
77 |
78 | protected override void OnMouseUp(MouseEventArgs e)
79 | {
80 | _overlapColor = _hoverOverlay;
81 | Invalidate();
82 | base.OnMouseUp(e);
83 | }
84 |
85 | protected override void OnMouseLeave(EventArgs e)
86 | {
87 | _overlapColor = Color.FromArgb(0, 0, 0, 0);
88 | Invalidate();
89 | base.OnMouseLeave(e);
90 | }
91 |
92 | protected override void OnMouseDown(MouseEventArgs e)
93 | {
94 | _overlapColor = _downOverlay;
95 | Invalidate();
96 | base.OnMouseDown(e);
97 | }
98 |
99 | protected override void OnGotFocus(EventArgs e)
100 | {
101 | _overlapColor = _hoverOverlay;
102 | Invalidate();
103 | base.OnGotFocus(e);
104 | }
105 |
106 | protected override void OnLostFocus(EventArgs e)
107 | {
108 | _overlapColor = Color.FromArgb(0, 0, 0, 0);
109 | Invalidate();
110 | base.OnLostFocus(e);
111 | }
112 |
113 | protected override void OnKeyDown(KeyEventArgs kevent)
114 | {
115 | //Enter does not fire keydown
116 | if (kevent.KeyCode == Keys.Space)
117 | _overlapColor = _downOverlay;
118 | Invalidate();
119 | base.OnKeyDown(kevent);
120 | }
121 |
122 | protected override void OnKeyUp(KeyEventArgs kevent)
123 | {
124 | if (kevent.KeyCode == Keys.Space)
125 | _overlapColor = _hoverOverlay;
126 | base.OnKeyUp(kevent);
127 | }
128 | }
129 | }
--------------------------------------------------------------------------------
/Dio/DioDefaults.cs:
--------------------------------------------------------------------------------
1 | #region
2 |
3 | using System.Drawing;
4 |
5 | #endregion
6 |
7 | namespace Dio
8 | {
9 | internal struct DioDefaults
10 | {
11 | public static Color DefaultBackColor { get; } = Color.CornflowerBlue;
12 | public static Color DefaultForeColor { get; } = Color.White;
13 | public static Font DefaultFont { get; } = new Font(new FontFamily("Segoe UI"), 8.25f);
14 | public static Color DioDefaultshadowColor { get; } = Color.FromArgb(200, 50, 50, 50);
15 | public static Color DefaultBorderColor { get; } = Color.FromArgb(100, 70, 70, 70);
16 | public static Color DefaultDarkForeColor { get; } = Color.FromArgb(200, 45, 45, 45);
17 | }
18 | }
--------------------------------------------------------------------------------
/Dio/DioGroupBox.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Drawing;
3 | using System.Drawing.Drawing2D;
4 | using System.Windows.Forms;
5 |
6 | namespace Dio
7 | {
8 | public class DioGroupBox : GroupBox
9 | {
10 | private readonly Color _overlapColor = Color.FromArgb(0, 0, 0, 0);
11 |
12 | public DioGroupBox()
13 | {
14 | SetStyle(
15 | ControlStyles.AllPaintingInWmPaint | ControlStyles.CacheText | ControlStyles.DoubleBuffer |
16 | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
17 | ShadowSize = 4;
18 | BackColor = Color.White;
19 | ForeColor = DioDefaults.DefaultDarkForeColor;
20 | ShadowColor = DioDefaults.DioDefaultshadowColor;
21 | Font = DioDefaults.DefaultFont;
22 | HandleCreated += (sender, args) => { DoubleBuffered = true; };
23 | }
24 |
25 | [Category("Appearance")]
26 | [Browsable(true)]
27 | [EditorBrowsable(EditorBrowsableState.Always)]
28 | [Bindable(false)]
29 | public int ShadowSize { get; set; }
30 |
31 | [Category("Appearance")]
32 | [Browsable(true)]
33 | [EditorBrowsable(EditorBrowsableState.Always)]
34 | [Bindable(false)]
35 | public Color ShadowColor { get; set; }
36 |
37 | [Category("Appearance")]
38 | [Browsable(true)]
39 | [EditorBrowsable(EditorBrowsableState.Always)]
40 | [Bindable(false)]
41 | public Color BorderColor { get; set; }
42 |
43 | protected override void OnPaint(PaintEventArgs pevent)
44 | {
45 | Graphics g = pevent.Graphics;
46 | g.Clear(Parent.BackColor);
47 | g.SmoothingMode = SmoothingMode.HighQuality;
48 | g.InterpolationMode = InterpolationMode.HighQualityBicubic;
49 | if (ShadowSize > 0)
50 | GlobalHelpers.DrawDownFade(g, new Rectangle(-1, Height - ShadowSize, Width + 1, ShadowSize),
51 | ShadowColor);
52 | using (
53 | SolidBrush backColorBrush = new SolidBrush(BackColor),
54 | foreColorBrush = new SolidBrush(ForeColor),
55 | overlayBrush = new SolidBrush(_overlapColor))
56 | using (Pen borderPen = new Pen(BorderColor), foreColorPen = new Pen(ForeColor))
57 | {
58 | Rectangle clippedBounds = new Rectangle(-1, -1, Width + 2, Height + 2 - ShadowSize);
59 | g.SetClip(new Rectangle(0, 0, Width, Height - ShadowSize + 1));
60 | g.FillRectangle(backColorBrush, clippedBounds);
61 | g.DrawRectangle(borderPen, 0, 0, Width - 1, Height - ShadowSize);
62 | g.FillRectangle(overlayBrush, clippedBounds);
63 | g.DrawString(Text, Font, foreColorBrush, 10, 7);
64 | SizeF stringSize = g.MeasureString(Text, Font);
65 | g.DrawLine(foreColorPen, 10, stringSize.Height + 9, stringSize.Width + 10, stringSize.Height + 9);
66 | }
67 | }
68 | }
69 | }
--------------------------------------------------------------------------------
/Dio/DioLabel.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Drawing;
3 | using System.Drawing.Drawing2D;
4 | using System.Windows.Forms;
5 |
6 | namespace Dio
7 | {
8 | public class DioLabel : Label
9 | {
10 |
11 | public DioLabel()
12 | {
13 | SetStyle(
14 | ControlStyles.AllPaintingInWmPaint | ControlStyles.CacheText | ControlStyles.DoubleBuffer |
15 | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
16 | Font = new Font(DioDefaults.DefaultFont.FontFamily, 14);
17 | BackColor = DioDefaults.DefaultBackColor;
18 | ForeColor = DioDefaults.DefaultDarkForeColor;
19 | TitleFont = DioDefaults.DefaultFont;
20 | DrawSide = true;
21 | HandleCreated += (sender, args) => { DoubleBuffered = true; };
22 | }
23 |
24 | [Category("Appearance")]
25 | [Browsable(true)]
26 | [EditorBrowsable(EditorBrowsableState.Always)]
27 | [Bindable(false)]
28 | public string Title { get; set; }
29 |
30 | [Category("Appearance")]
31 | [Browsable(true)]
32 | [EditorBrowsable(EditorBrowsableState.Always)]
33 | [Bindable(false)]
34 | public Font TitleFont { get; set; }
35 |
36 | [Category("Appearance")]
37 | [Browsable(true)]
38 | [EditorBrowsable(EditorBrowsableState.Always)]
39 | [Bindable(false)]
40 | public bool DrawSide { get; set; }
41 |
42 | public override bool AutoSize
43 | {
44 | get { return false; }
45 | }
46 |
47 | protected override void OnPaint(PaintEventArgs pevent)
48 | {
49 | Graphics g = pevent.Graphics;
50 | g.Clear(Parent.BackColor);
51 | g.InterpolationMode = InterpolationMode.HighQualityBicubic;
52 | using (
53 | SolidBrush backColorBrush = new SolidBrush(BackColor),
54 | foreColorBrush = new SolidBrush(ForeColor))
55 | {
56 | int decal = 0;
57 | if (DrawSide)
58 | {
59 | g.FillRectangle(backColorBrush, 0, 0, 4, Height);
60 | decal = 8;
61 | }
62 | else
63 | {
64 | decal = 0;
65 | }
66 |
67 | SizeF titleSize = new SizeF(0, 0);
68 | if (!string.IsNullOrEmpty(Title))
69 | {
70 | titleSize = g.MeasureString(Title, TitleFont);
71 | g.DrawString(Title, TitleFont, foreColorBrush, decal, 0);
72 | }
73 |
74 | SizeF textSize = g.MeasureString(Text, Font);
75 | g.DrawString(Text, Font, foreColorBrush, decal,
76 | (Height - textSize.Height - titleSize.Height) / 2 + titleSize.Height);
77 | }
78 | }
79 | }
80 | }
--------------------------------------------------------------------------------
/Dio/DioMarqueeProgressBar.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Drawing;
3 | using System.Drawing.Drawing2D;
4 | using System.Windows.Forms;
5 | using Timer = System.Timers.Timer;
6 |
7 | namespace Dio
8 | {
9 | public class DioMarqueeProgressBar : Control
10 | {
11 | private readonly int _increment = 1;
12 | private readonly Timer timer;
13 | private int _marqueePos;
14 |
15 | private int _marqueeWidth;
16 | private int _marqueeWidthConst;
17 | private Color _overlapColor = Color.FromArgb(0, 0, 0, 0);
18 |
19 | public DioMarqueeProgressBar()
20 | {
21 | timer = new Timer();
22 | timer.Interval = 12;
23 | timer.Elapsed += (sender, args) => Callback();
24 | Size = new Size(150, 14);
25 | BorderColor = DioDefaults.DefaultBorderColor;
26 | Font = DioDefaults.DefaultFont;
27 | HandleCreated += (sender, args) => { DoubleBuffered = true; };
28 | SetStyle(
29 | ControlStyles.AllPaintingInWmPaint | ControlStyles.CacheText | ControlStyles.DoubleBuffer |
30 | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
31 | BackColor = Color.White;
32 | ForeColor = DioDefaults.DefaultBackColor;
33 |
34 | MarqueeWidth = 50;
35 | MarqueeXPos = 20;
36 | MarqueeVisible = true;
37 | _marqueeWidth = MarqueeWidth;
38 | _marqueePos = MarqueeXPos;
39 | }
40 |
41 | [Category("Appearance")]
42 | [Browsable(true)]
43 | [EditorBrowsable(EditorBrowsableState.Always)]
44 | [Bindable(false)]
45 | public Color BorderColor { get; set; }
46 |
47 | [Category("Appearance")]
48 | [Browsable(true)]
49 | [EditorBrowsable(EditorBrowsableState.Always)]
50 | [Bindable(false)]
51 | public bool MarqueeVisible { get; set; }
52 |
53 | [Category("Appearance")]
54 | [Browsable(true)]
55 | [EditorBrowsable(EditorBrowsableState.Always)]
56 | [Bindable(false)]
57 | public int MarqueeWidth
58 | {
59 | get { return _marqueeWidthConst; }
60 | set
61 | {
62 | _marqueeWidthConst = value;
63 | _marqueeWidth = value;
64 | }
65 | }
66 |
67 | [Category("Appearance")]
68 | [Browsable(true)]
69 | [EditorBrowsable(EditorBrowsableState.Always)]
70 | [Bindable(false)]
71 | public int MarqueeXPos { get; set; }
72 |
73 | protected override void OnPaint(PaintEventArgs pevent)
74 | {
75 | Graphics g = pevent.Graphics;
76 | g.Clear(Parent.BackColor);
77 | g.SmoothingMode = SmoothingMode.HighQuality;
78 | g.InterpolationMode = InterpolationMode.HighQualityBicubic;
79 | using (Pen borderPen = new Pen(BorderColor))
80 | using (SolidBrush backColorBrush = new SolidBrush(BackColor), foreColorBrush = new SolidBrush(ForeColor))
81 | {
82 | g.FillRectangle(backColorBrush, 0, 0, Width - 1, Height - 1);
83 | if (MarqueeVisible)
84 | g.FillRectangle(foreColorBrush, MarqueeXPos, 0, _marqueeWidth, Height - 1);
85 | g.DrawRectangle(borderPen, 0, 0, Width - 1, Height - 1);
86 | }
87 | }
88 |
89 | public void Start()
90 | {
91 | MarqueeVisible = true;
92 | timer.Start();
93 | }
94 |
95 | public void Stop()
96 | {
97 | timer.Stop();
98 | }
99 |
100 | private void Callback()
101 | {
102 | if (MarqueeXPos + MarqueeWidth >= Width)
103 | _marqueeWidth = Width - MarqueeXPos - 2;
104 | if (_marqueePos < 0)
105 | {
106 | MarqueeXPos = 0;
107 | _marqueeWidth += _increment;
108 | _marqueePos += _increment;
109 | }
110 | else if (MarqueeXPos >= Width)
111 | {
112 | _marqueePos = -MarqueeWidth;
113 | }
114 | else
115 | {
116 | MarqueeXPos += _increment;
117 | }
118 |
119 | Invalidate();
120 | }
121 | }
122 | }
--------------------------------------------------------------------------------
/Dio/DioRadioButton.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Drawing;
4 | using System.Drawing.Drawing2D;
5 | using System.Windows.Forms;
6 |
7 | namespace Dio
8 | {
9 | public class DioRadioButton : RadioButton
10 | {
11 | private readonly Color _downOverlay = Color.FromArgb(70, 0, 0, 0);
12 | private readonly Color _hoverOverlay = Color.FromArgb(45, 35, 35, 35);
13 | private Color _overlapColor = Color.FromArgb(0, 0, 0, 0);
14 |
15 | public DioRadioButton()
16 | {
17 | SetStyle(
18 | ControlStyles.AllPaintingInWmPaint | ControlStyles.CacheText | ControlStyles.DoubleBuffer |
19 | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
20 | BackColor = DioDefaults.DefaultBackColor;
21 | ForeColor = DioDefaults.DefaultDarkForeColor;
22 | Font = DioDefaults.DefaultFont;
23 | HandleCreated += (sender, args) => { DoubleBuffered = true; };
24 | AutoSize = true;
25 | }
26 |
27 | [Category("Appearance")]
28 | [Browsable(true)]
29 | [EditorBrowsable(EditorBrowsableState.Always)]
30 | [Bindable(false)]
31 | public Color BorderColor { get; set; }
32 |
33 | public override Size GetPreferredSize(Size proposedSize)
34 | {
35 | return new Size(18 + Convert.ToInt32(Graphics.FromHwnd(Handle).MeasureString(Text, Font).Width), 15);
36 | }
37 |
38 | protected override void OnPaint(PaintEventArgs pevent)
39 | {
40 | Graphics g = pevent.Graphics;
41 | g.Clear(Parent.BackColor);
42 | g.SmoothingMode = SmoothingMode.HighQuality;
43 | g.InterpolationMode = InterpolationMode.HighQualityBicubic;
44 | using (
45 | SolidBrush backColorBrush = new SolidBrush(BackColor),
46 | foreColorBrush = new SolidBrush(ForeColor))
47 | using (Pen foreColorPen = new Pen(Color.FromArgb(100, ForeColor)), overlayPen = new Pen(_overlapColor))
48 | {
49 | g.DrawEllipse(foreColorPen, 0, 0, 14, 14);
50 | g.DrawEllipse(overlayPen, 0, 0, 14, 14);
51 | if (Checked)
52 | {
53 | g.FillEllipse(backColorBrush, 3, 3, 8, 8);
54 | using (GraphicsPath path = new GraphicsPath())
55 | {
56 | using (GraphicsPath clipPath = new GraphicsPath())
57 | {
58 | path.AddPolygon(new[] {new Point(2, 12), new Point(11, 11), new Point(11, 2)});
59 | clipPath.AddEllipse(3, 3, 8, 8);
60 | g.SetClip(clipPath);
61 | using (SolidBrush brush = new SolidBrush(Color.FromArgb(50, 20, 20, 20)))
62 | {
63 | g.FillPath(brush, path);
64 | }
65 |
66 | g.ResetClip();
67 | }
68 | }
69 | }
70 |
71 | g.DrawString(Text, Font, foreColorBrush, 18, (Height - g.MeasureString(Text, Font).Height) / 2);
72 | }
73 | }
74 |
75 | protected override void OnMouseEnter(EventArgs e)
76 | {
77 | _overlapColor = _hoverOverlay;
78 | Invalidate();
79 | base.OnMouseEnter(e);
80 | }
81 |
82 | protected override void OnMouseUp(MouseEventArgs e)
83 | {
84 | _overlapColor = _hoverOverlay;
85 | Invalidate();
86 | base.OnMouseUp(e);
87 | }
88 |
89 | protected override void OnMouseLeave(EventArgs e)
90 | {
91 | _overlapColor = Color.FromArgb(0, 0, 0, 0);
92 | Invalidate();
93 | base.OnMouseLeave(e);
94 | }
95 |
96 | protected override void OnMouseDown(MouseEventArgs e)
97 | {
98 | _overlapColor = _downOverlay;
99 | Invalidate();
100 | base.OnMouseDown(e);
101 | }
102 |
103 | protected override void OnGotFocus(EventArgs e)
104 | {
105 | _overlapColor = _hoverOverlay;
106 | Invalidate();
107 | base.OnGotFocus(e);
108 | }
109 |
110 | protected override void OnLostFocus(EventArgs e)
111 | {
112 | _overlapColor = Color.FromArgb(0, 0, 0, 0);
113 | Invalidate();
114 | base.OnLostFocus(e);
115 | }
116 |
117 | protected override void OnKeyDown(KeyEventArgs kevent)
118 | {
119 | //Enter does not fire keydown
120 | if (kevent.KeyCode == Keys.Space)
121 | _overlapColor = _downOverlay;
122 | Invalidate();
123 | base.OnKeyDown(kevent);
124 | }
125 |
126 | protected override void OnKeyUp(KeyEventArgs kevent)
127 | {
128 | if (kevent.KeyCode == Keys.Space)
129 | _overlapColor = _hoverOverlay;
130 | base.OnKeyUp(kevent);
131 | }
132 | }
133 | }
--------------------------------------------------------------------------------
/Dio/DioTextBox.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Drawing;
4 | using System.Drawing.Drawing2D;
5 | using System.Windows.Forms;
6 |
7 | namespace Dio
8 | {
9 | public class DioTextBox : Control
10 | {
11 | private Color _overlapColor = Color.FromArgb(0, 0, 0, 0);
12 |
13 | public DioTextBox()
14 | {
15 | Size = new Size(150, 22);
16 | SetStyle(
17 | ControlStyles.AllPaintingInWmPaint | ControlStyles.CacheText | ControlStyles.DoubleBuffer |
18 | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
19 | BackColor = Color.White;
20 | ForeColor = DioDefaults.DefaultDarkForeColor;
21 | BorderColor = DioDefaults.DefaultBackColor;
22 | Font = DioDefaults.DefaultFont;
23 | InitialBorderColor = DioDefaults.DefaultBorderColor;
24 | _overlapColor = InitialBorderColor;
25 | if (this.InlineTextBox == null)
26 | this.InlineTextBox = new TextBox();
27 |
28 | this.InlineTextBox.BorderStyle = BorderStyle.None;
29 | this.InlineTextBox.Location = new Point(3, 4);
30 | this.InlineTextBox.GotFocus += (sender, args) => OnGotFocus(args);
31 | this.InlineTextBox.LostFocus += (sender, args) => OnLostFocus(args);
32 | this.InlineTextBox.MouseDown += (sender, args) => OnMouseDown(args);
33 | this.InlineTextBox.MouseLeave += (sender, args) => OnMouseLeave(args);
34 | this.InlineTextBox.MouseEnter += (sender, args) => OnMouseEnter(args);
35 | this.InlineTextBox.Multiline = Multiline;
36 | this.InlineTextBox.MultilineChanged += (sender, args) =>
37 | {
38 | OnSizeChanged(args);
39 | Multiline = this.InlineTextBox.Multiline;
40 | };
41 | this.InlineTextBox.TextChanged += (sender, args) => Text = this.InlineTextBox.Text;
42 | this.InlineTextBox.BackColor = BackColor;
43 | this.InlineTextBox.ForeColor = ForeColor;
44 | HandleCreated += (sender, args) => { DoubleBuffered = true; };
45 | Controls.Add(this.InlineTextBox);
46 | BackColorChanged += (sender, args) => this.InlineTextBox.BackColor = BackColor;
47 | ForeColorChanged += (sender, args) => this.InlineTextBox.ForeColor = ForeColor;
48 | }
49 |
50 | //[Browsable(false)]
51 | //[EditorBrowsable(EditorBrowsableState.Never)]
52 | //[Bindable(true)]
53 | public TextBox InlineTextBox { get; set; }
54 |
55 | [Category("Appearance")]
56 | [Browsable(true)]
57 | [EditorBrowsable(EditorBrowsableState.Always)]
58 | [Bindable(false)]
59 | public Color BorderColor { get; set; }
60 |
61 | [Category("Appearance")]
62 | [Browsable(true)]
63 | [EditorBrowsable(EditorBrowsableState.Always)]
64 | [Bindable(false)]
65 | public Color InitialBorderColor { get; set; }
66 |
67 | public bool Multiline { get; set; }
68 |
69 | public new Size Size
70 | {
71 | get { return base.Size; }
72 | set
73 | {
74 | base.Size = value;
75 | if (this.InlineTextBox != null) this.InlineTextBox.Size = new Size(base.Size.Width - 6, base.Size.Height - 6);
76 | }
77 | }
78 |
79 | protected override void OnPaint(PaintEventArgs pevent)
80 | {
81 | Graphics g = pevent.Graphics;
82 | g.Clear(Parent.BackColor);
83 | g.SmoothingMode = SmoothingMode.HighQuality;
84 | g.InterpolationMode = InterpolationMode.HighQualityBicubic;
85 | using (SolidBrush backColorBrush = new SolidBrush(BackColor))
86 | using (Pen borderPen = new Pen(_overlapColor))
87 | {
88 | g.FillRectangle(backColorBrush, -1, -1, Width + 1, Height + 1);
89 | g.DrawRectangle(borderPen, 0, 0, Width - 1, Height - 1);
90 | }
91 | }
92 |
93 | protected override void OnMouseEnter(EventArgs e)
94 | {
95 | if (!this.InlineTextBox.Focused)
96 | {
97 | _overlapColor = Color.FromArgb(175, BorderColor);
98 | Invalidate();
99 | base.OnMouseEnter(e);
100 | }
101 | }
102 |
103 | protected override void OnMouseLeave(EventArgs e)
104 | {
105 | if (!this.InlineTextBox.Focused)
106 | {
107 | _overlapColor = InitialBorderColor;
108 | Invalidate();
109 | base.OnMouseLeave(e);
110 | }
111 | }
112 |
113 | protected override void OnMouseDown(MouseEventArgs e)
114 | {
115 | _overlapColor = BorderColor;
116 | Invalidate();
117 | if (!this.InlineTextBox.Focused)
118 | this.InlineTextBox.Focus();
119 | base.OnMouseDown(e);
120 | }
121 |
122 | protected override void OnHandleCreated(EventArgs e)
123 | {
124 | if (this.InlineTextBox.Multiline)
125 | {
126 | this.InlineTextBox.Size = new Size(Size.Width - 6, Size.Height - 6);
127 | this.InlineTextBox.Text = Text;
128 | }
129 |
130 | base.OnHandleCreated(e);
131 | }
132 |
133 | protected override void OnGotFocus(EventArgs e)
134 | {
135 | _overlapColor = BorderColor;
136 | Invalidate();
137 | if (!this.InlineTextBox.Focused)
138 | this.InlineTextBox.Focus();
139 | base.OnGotFocus(e);
140 | }
141 |
142 | protected override void OnLostFocus(EventArgs e)
143 | {
144 | _overlapColor = InitialBorderColor;
145 | Invalidate();
146 | base.OnLostFocus(e);
147 | }
148 |
149 | protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
150 | {
151 | if (Multiline)
152 | base.SetBoundsCore(x, y, width, height, specified);
153 | else
154 | base.SetBoundsCore(x, y, width, 22, specified);
155 | }
156 |
157 | protected override void OnSizeChanged(EventArgs e)
158 | {
159 | if (this.InlineTextBox != null)
160 | if (this.InlineTextBox.Multiline)
161 | this.InlineTextBox.Size = new Size(Size.Width - 6, Size.Height - 6);
162 | else
163 | this.InlineTextBox.Size = new Size(Size.Width - 6, this.InlineTextBox.Height);
164 | base.OnSizeChanged(e);
165 | }
166 |
167 | protected override void OnTextChanged(EventArgs e)
168 | {
169 | this.InlineTextBox.Text = Text;
170 | Invalidate();
171 | base.OnTextChanged(e);
172 | }
173 | }
174 | }
--------------------------------------------------------------------------------
/Dio/GlobalHelpers.cs:
--------------------------------------------------------------------------------
1 | #region
2 |
3 | using System;
4 | using System.Drawing;
5 | using System.Drawing.Drawing2D;
6 | using System.IO;
7 |
8 | #endregion
9 |
10 | namespace Dio
11 | {
12 | internal static class GlobalHelpers
13 | {
14 | public static readonly string DownArrowBase64String =
15 | "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAh0lEQVQ4T93TMQrCUAzG8V9x8QziiYSuXdzFC7h4AcELOPQAdXYovZCHEATlgQV5GFTe1ozJlz/kS1IpjKqw3wQBVyy++JI0y1GTe7DCBbMAckeNIQKk/BanALBB+16LtnDELoMcsM/BESDlz2heDR3WePwKSLo5eoxz3z6NNcFD+vu3ij14Aqz/DxGbKB7CAAAAAElFTkSuQmCC";
16 |
17 |
18 | public static GraphicsPath GetRoundedRect(Rectangle baseRect,
19 | int radius)
20 | {
21 | int corner = radius * 2;
22 | GraphicsPath gp = new GraphicsPath();
23 | gp.AddArc(new Rectangle(baseRect.X, baseRect.Y, corner, corner), -180, 90);
24 | gp.AddArc(new Rectangle(baseRect.Width - corner + baseRect.X, baseRect.Y, corner, corner), -90, 90);
25 | gp.AddArc(
26 | new Rectangle(baseRect.Width - corner + baseRect.X, baseRect.Height - corner + baseRect.Y, corner,
27 | corner), 0, 90);
28 | gp.AddArc(new Rectangle(baseRect.X, baseRect.Height - corner + baseRect.Y, corner, corner), 90, 90);
29 | gp.CloseAllFigures();
30 | return gp;
31 | }
32 |
33 | public static GraphicsPath GetRoundedRect(RectangleF baseRect,
34 | float radius)
35 | {
36 | float corner = radius * 2;
37 | GraphicsPath GP = new GraphicsPath();
38 | GP.AddArc(new RectangleF(baseRect.X, baseRect.Y, corner, corner), -180, 90);
39 | GP.AddArc(new RectangleF(baseRect.Width - corner + baseRect.X, baseRect.Y, corner, corner), -90, 90);
40 | GP.AddArc(
41 | new RectangleF(baseRect.Width - corner + baseRect.X, baseRect.Height - corner + baseRect.Y, corner,
42 | corner), 0, 90);
43 | GP.AddArc(new RectangleF(baseRect.X, baseRect.Height - corner + baseRect.Y, corner, corner), 90, 90);
44 | GP.CloseAllFigures();
45 | return GP;
46 | }
47 |
48 | public static void DrawDownFade(Graphics g, Rectangle area, Color finalColor)
49 | {
50 | using (LinearGradientBrush brush = new LinearGradientBrush(area, Color.Transparent, finalColor, 270))
51 | {
52 | g.FillRectangle(brush, area);
53 | }
54 |
55 | /*
56 | int floorIncrements = finalColor.A / area.Height;
57 | for (int i = 0; i < area.Height; i++)
58 | {
59 | using (Pen pen = new Pen(Color.FromArgb(finalColor.A - (floorIncrements * (i + 1)), finalColor)))
60 | g.DrawLine(pen, area.X, area.Y + i, area.Width, area.Y + i);
61 | }
62 | */
63 | }
64 |
65 | ///
66 | /// Changes the overall transparency of an image
67 | ///
68 | /// The input image to be tuned
69 | /// the desired alpha value. It is based on the 255 alpha pixels
70 | /// To conserve the antialiasing on the image
71 | ///
72 | public static Image TuneTransparency(Image originalImage, int alpha, bool antialias)
73 | {
74 | //Cast & clone image to bitmap
75 | Bitmap bitmap = new Bitmap(originalImage);
76 | //Cycle through all pixels
77 | Color pixel;
78 |
79 | //ratio between a max byte and desired alpha byte, this achieves the conservation of antialiasing
80 | int ratio = 255 / alpha;
81 | for (int i = 0; i < originalImage.Width; i++)
82 | for (int j = 0; j < originalImage.Height; j++)
83 | {
84 | //Get pixel color
85 | pixel = bitmap.GetPixel(i, j);
86 |
87 | //If pixel is not already transparent
88 | if (pixel.A != 0)
89 | bitmap.SetPixel(i, j, Color.FromArgb(
90 | //If antialiasing is enabled use the pixel alpha/ratio else just use the set alpha
91 | antialias ? pixel.A / ratio : alpha,
92 | pixel));
93 | }
94 |
95 | return bitmap;
96 | }
97 |
98 | ///
99 | /// Lightens a color
100 | ///
101 | /// Original color
102 | /// The amount of bytes to lighten the color
103 | ///
104 | public static Color ChangeColor(Color originalColor, int difference)
105 | {
106 | return
107 | Color.FromArgb(originalColor.R + difference > 255 ? 255 : originalColor.R + difference,
108 | originalColor.G + difference > 255 ? 255 : originalColor.G + difference,
109 | originalColor.B + difference > 255 ? 255 : originalColor.B + difference);
110 | }
111 |
112 | ///
113 | /// Transforms a base64 string to an image
114 | ///
115 | /// Base64 image string
116 | ///
117 | public static Image Base64ToImage(string base64string)
118 | {
119 | MemoryStream stream = new MemoryStream(Convert.FromBase64String(base64string));
120 | return Image.FromStream(stream);
121 | }
122 | }
123 | }
--------------------------------------------------------------------------------
/Dio/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Dio")]
9 | [assembly: AssemblyDescription("Control library")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("uint32labs")]
12 | [assembly: AssemblyProduct("Dio")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("d8affcd4-5d23-49b0-930a-9d88d5937bda")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/MentQ/GlobalHelpers.cs:
--------------------------------------------------------------------------------
1 | #region
2 |
3 | using System;
4 | using System.Drawing;
5 | using System.Drawing.Drawing2D;
6 | using System.IO;
7 |
8 | #endregion
9 |
10 | namespace MentQ
11 | {
12 | internal static class GlobalHelpers
13 | {
14 | public static readonly string DownArrowBase64String =
15 | "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAh0lEQVQ4T93TMQrCUAzG8V9x8QziiYSuXdzFC7h4AcELOPQAdXYovZCHEATlgQV5GFTe1ozJlz/kS1IpjKqw3wQBVyy++JI0y1GTe7DCBbMAckeNIQKk/BanALBB+16LtnDELoMcsM/BESDlz2heDR3WePwKSLo5eoxz3z6NNcFD+vu3ij14Aqz/DxGbKB7CAAAAAElFTkSuQmCC";
16 |
17 |
18 | public static GraphicsPath GetRoundedRect(Rectangle baseRect,
19 | int radius)
20 | {
21 | int corner = radius * 2;
22 | GraphicsPath gp = new GraphicsPath();
23 | gp.AddArc(new Rectangle(baseRect.X, baseRect.Y, corner, corner), -180, 90);
24 | gp.AddArc(new Rectangle(baseRect.Width - corner + baseRect.X, baseRect.Y, corner, corner), -90, 90);
25 | gp.AddArc(
26 | new Rectangle(baseRect.Width - corner + baseRect.X, baseRect.Height - corner + baseRect.Y, corner,
27 | corner), 0, 90);
28 | gp.AddArc(new Rectangle(baseRect.X, baseRect.Height - corner + baseRect.Y, corner, corner), 90, 90);
29 | gp.CloseAllFigures();
30 | return gp;
31 | }
32 |
33 | public static GraphicsPath GetRoundedRect(RectangleF baseRect,
34 | float radius)
35 | {
36 | float corner = radius * 2;
37 | GraphicsPath GP = new GraphicsPath();
38 | GP.AddArc(new RectangleF(baseRect.X, baseRect.Y, corner, corner), -180, 90);
39 | GP.AddArc(new RectangleF(baseRect.Width - corner + baseRect.X, baseRect.Y, corner, corner), -90, 90);
40 | GP.AddArc(
41 | new RectangleF(baseRect.Width - corner + baseRect.X, baseRect.Height - corner + baseRect.Y, corner,
42 | corner), 0, 90);
43 | GP.AddArc(new RectangleF(baseRect.X, baseRect.Height - corner + baseRect.Y, corner, corner), 90, 90);
44 | GP.CloseAllFigures();
45 | return GP;
46 | }
47 |
48 | public static void DrawDownFade(Graphics g, Rectangle area, Color finalColor)
49 | {
50 | using (LinearGradientBrush brush = new LinearGradientBrush(area, Color.Transparent, finalColor, 270))
51 | {
52 | g.FillRectangle(brush, area);
53 | }
54 |
55 | /*
56 | int floorIncrements = finalColor.A / area.Height;
57 | for (int i = 0; i < area.Height; i++)
58 | {
59 | using (Pen pen = new Pen(Color.FromArgb(finalColor.A - (floorIncrements * (i + 1)), finalColor)))
60 | g.DrawLine(pen, area.X, area.Y + i, area.Width, area.Y + i);
61 | }
62 | */
63 | }
64 |
65 | ///
66 | /// Changes the overall transparency of an image
67 | ///
68 | /// The input image to be tuned
69 | /// the desired alpha value. It is based on the 255 alpha pixels
70 | /// To conserve the antialiasing on the image
71 | ///
72 | public static Image TuneTransparency(Image originalImage, int alpha, bool antialias)
73 | {
74 | //Cast & clone image to bitmap
75 | Bitmap bitmap = new Bitmap(originalImage);
76 | //Cycle through all pixels
77 | Color pixel;
78 |
79 | //ratio between a max byte and desired alpha byte, this achieves the conservation of antialiasing
80 | int ratio = 255 / alpha;
81 | for (int i = 0; i < originalImage.Width; i++)
82 | for (int j = 0; j < originalImage.Height; j++)
83 | {
84 | //Get pixel color
85 | pixel = bitmap.GetPixel(i, j);
86 |
87 | //If pixel is not already transparent
88 | if (pixel.A != 0)
89 | bitmap.SetPixel(i, j, Color.FromArgb(
90 | //If antialiasing is enabled use the pixel alpha/ratio else just use the set alpha
91 | antialias ? pixel.A / ratio : alpha,
92 | pixel));
93 | }
94 |
95 | return bitmap;
96 | }
97 |
98 | ///
99 | /// Lightens a color
100 | ///
101 | /// Original color
102 | /// The amount of bytes to lighten the color
103 | ///
104 | public static Color ChangeColor(Color originalColor, int difference)
105 | {
106 | return
107 | Color.FromArgb(originalColor.R + difference > 255 ? 255 : originalColor.R + difference,
108 | originalColor.G + difference > 255 ? 255 : originalColor.G + difference,
109 | originalColor.B + difference > 255 ? 255 : originalColor.B + difference);
110 | }
111 |
112 | ///
113 | /// Transforms a base64 string to an image
114 | ///
115 | /// Base64 image string
116 | ///
117 | public static Image Base64ToImage(string base64string)
118 | {
119 | MemoryStream stream = new MemoryStream(Convert.FromBase64String(base64string));
120 | return Image.FromStream(stream);
121 | }
122 | }
123 | }
--------------------------------------------------------------------------------
/MentQ/MentQ.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {9C4EAB90-4F39-411D-85DA-8B00E1291B6E}
8 | Library
9 | Properties
10 | MentQ
11 | MentQ
12 | v4.6.1
13 | 512
14 |
15 |
16 | true
17 | full
18 | false
19 | bin\Debug\
20 | DEBUG;TRACE
21 | prompt
22 | 4
23 |
24 |
25 | pdbonly
26 | true
27 | bin\Release\
28 | TRACE
29 | prompt
30 | 4
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | Component
49 |
50 |
51 | Component
52 |
53 |
54 | Component
55 |
56 |
57 | Component
58 |
59 |
60 | Component
61 |
62 |
63 | Component
64 |
65 |
66 | Component
67 |
68 |
69 | Component
70 |
71 |
72 | Component
73 |
74 |
75 | Component
76 |
77 |
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/MentQ/MentQButton.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Drawing;
4 | using System.Drawing.Drawing2D;
5 | using System.Windows.Forms;
6 |
7 | namespace MentQ
8 | {
9 | [Category("MentQ")]
10 | public class MentQButton : Button
11 | {
12 | private Color _overlapColor;
13 | private bool _underline;
14 | private Color _underlineColor;
15 | private int _underlineSize;
16 |
17 | public MentQButton()
18 | {
19 | Font = new Font("Verdana", 7);
20 | ForeColor = Color.White;
21 | SetStyle(
22 | ControlStyles.CacheText | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint |
23 | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
24 | DoubleBuffered = true;
25 | BackColor = MentQDefaults.MentQBlue;
26 | UnderlineSize = 2;
27 | UnderlineColor = Color.FromArgb(100, 70, 70, 70);
28 | }
29 |
30 | [Category("Appearance")]
31 | public override string Text
32 | {
33 | get { return base.Text; }
34 | set
35 | {
36 | base.Text = value;
37 | Invalidate();
38 | }
39 | }
40 |
41 | [Category("Appearance")]
42 | public bool Underline
43 | {
44 | get { return _underline; }
45 | set
46 | {
47 | _underline = value;
48 | Invalidate();
49 | }
50 | }
51 |
52 | [Category("Appearance")]
53 | public int UnderlineSize
54 | {
55 | get { return _underlineSize; }
56 | set
57 | {
58 | _underlineSize = value;
59 | Invalidate();
60 | }
61 | }
62 |
63 | [Category("Appearance")]
64 | public Color UnderlineColor
65 | {
66 | get { return _underlineColor; }
67 | set
68 | {
69 | _underlineColor = value;
70 | Invalidate();
71 | }
72 | }
73 |
74 | protected override void OnPaint(PaintEventArgs pevent)
75 | {
76 | Graphics G = pevent.Graphics;
77 | G.Clear(Parent.BackColor);
78 | G.SmoothingMode = SmoothingMode.HighQuality;
79 | G.InterpolationMode = InterpolationMode.HighQualityBicubic;
80 | using (SolidBrush backColorBrush = new SolidBrush(BackColor))
81 | {
82 | G.FillPath(backColorBrush,
83 | GlobalHelpers.GetRoundedRect(new RectangleF(-1, -1, Width + 1, Height + 1), 5));
84 | }
85 |
86 | using (SolidBrush overlapBrush = new SolidBrush(_overlapColor))
87 | {
88 | G.FillPath(overlapBrush,
89 | GlobalHelpers.GetRoundedRect(new RectangleF(-1, -1, Width + 1, Height + 1), 5));
90 | }
91 |
92 | using (SolidBrush textBrush = new SolidBrush(ForeColor))
93 | {
94 | PointF textPosition = new PointF((Width - G.MeasureString(Text, Font).Width) / 2,
95 | (Height - G.MeasureString(Text, Font).Height) / 2);
96 | if (ImageList != null)
97 | {
98 | int index = ImageIndex;
99 | if (!string.IsNullOrEmpty(ImageKey) && index != -1)
100 | index = ImageList.Images.IndexOfKey(ImageKey);
101 | if (index != -1)
102 | ImageList.Draw(G, Convert.ToInt32(textPosition.X) - ImageList.ImageSize.Width - 5,
103 | (Height - ImageList.ImageSize.Height) / 2, ImageIndex);
104 | }
105 | else if (Image != null)
106 | {
107 | G.DrawImage(Image,
108 | new Point(Convert.ToInt32(textPosition.X) - Image.Width - 5, (Height - Image.Height) / 2));
109 | }
110 |
111 | G.DrawString(Text, Font, textBrush, textPosition);
112 | }
113 |
114 | if (Underline)
115 | using (SolidBrush underlineBrush = new SolidBrush(UnderlineColor))
116 | {
117 | G.SetClip(new Rectangle(0, Height - UnderlineSize, Width, UnderlineSize));
118 | G.FillPath(underlineBrush,
119 | GlobalHelpers.GetRoundedRect(new RectangleF(-1, -1, Width + 1, Height + 1), 5));
120 | }
121 |
122 | if (Enabled == false)
123 | using (SolidBrush disabledBrush = new SolidBrush(Color.FromArgb(100, 222, 222, 222)))
124 | {
125 | G.FillPath(disabledBrush,
126 | GlobalHelpers.GetRoundedRect(new RectangleF(-1, -1, Width + 1, Height + 1), 5));
127 | }
128 | }
129 |
130 | protected override void OnMouseEnter(EventArgs e)
131 | {
132 | _overlapColor = Color.FromArgb(40, 50, 50, 50);
133 | Invalidate();
134 | base.OnMouseEnter(e);
135 | }
136 |
137 | protected override void OnMouseUp(MouseEventArgs e)
138 | {
139 | _overlapColor = Color.FromArgb(40, 50, 50, 50);
140 | Invalidate();
141 | base.OnMouseUp(e);
142 | }
143 |
144 | protected override void OnMouseLeave(EventArgs e)
145 | {
146 | _overlapColor = Color.FromArgb(0, 0, 0, 0);
147 | Invalidate();
148 | base.OnMouseLeave(e);
149 | }
150 |
151 | protected override void OnMouseDown(MouseEventArgs e)
152 | {
153 | _overlapColor = Color.FromArgb(60, 0, 0, 0);
154 | Invalidate();
155 | base.OnMouseDown(e);
156 | }
157 |
158 | protected override void OnGotFocus(EventArgs e)
159 | {
160 | _overlapColor = Color.FromArgb(40, 50, 50, 50);
161 | Invalidate();
162 | base.OnGotFocus(e);
163 | }
164 |
165 | protected override void OnLostFocus(EventArgs e)
166 | {
167 | _overlapColor = Color.FromArgb(0, 0, 0, 0);
168 | Invalidate();
169 | base.OnLostFocus(e);
170 | }
171 | }
172 | }
--------------------------------------------------------------------------------
/MentQ/MentQCheckBox.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Drawing;
4 | using System.Drawing.Drawing2D;
5 | using System.Windows.Forms;
6 |
7 | namespace MentQ
8 | {
9 | [Category("MentQ")]
10 | public class MentQCheckBox : CheckBox
11 | {
12 | public MentQCheckBox()
13 | {
14 | Font = new Font("Verdana", 7);
15 | ForeColor = Color.Black;
16 | BackColor = MentQDefaults.MentQBlue;
17 | SetStyle(
18 | ControlStyles.CacheText | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint |
19 | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
20 | AutoSize = true;
21 | }
22 |
23 | [Category("Appearance")]
24 | public override string Text
25 | {
26 | get { return base.Text; }
27 | set
28 | {
29 | base.Text = value;
30 | Invalidate();
31 | }
32 | }
33 |
34 | public override Size GetPreferredSize(Size proposedSize)
35 | {
36 | return new Size(17 + Convert.ToInt32(Graphics.FromHwnd(Handle).MeasureString(Text, Font).Width), 14);
37 | }
38 |
39 | protected override void OnCreateControl()
40 | {
41 | DoubleBuffered = true;
42 | base.OnCreateControl();
43 | }
44 |
45 | protected override void OnPaint(PaintEventArgs e)
46 | {
47 | base.OnPaint(e);
48 | Graphics G = e.Graphics;
49 | G.SmoothingMode = SmoothingMode.HighQuality;
50 | G.Clear(Parent.BackColor);
51 | using (SolidBrush backBrush = new SolidBrush(Color.FromArgb(5, 30, 30, 30)))
52 | {
53 | G.FillPath(backBrush, GlobalHelpers.GetRoundedRect(new Rectangle(0, 0, 13, 13), 3));
54 | }
55 |
56 | G.SetClip(new Rectangle(3, 3, 8, 8));
57 | if (Checked)
58 | using (SolidBrush backColorBrush = new SolidBrush(BackColor))
59 | {
60 | G.FillPath(backColorBrush, GlobalHelpers.GetRoundedRect(new RectangleF(2, 2, 9, 9), 4.3F));
61 | }
62 |
63 | G.ResetClip();
64 | using (Pen pen = new Pen(Color.FromArgb(85, 13, 13, 13)))
65 | {
66 | G.DrawPath(pen, GlobalHelpers.GetRoundedRect(new Rectangle(0, 0, 13, 13), 2));
67 | }
68 |
69 | using (SolidBrush foreColorBrush = new SolidBrush(ForeColor))
70 | {
71 | G.DrawString(Text, Font, foreColorBrush, 15, (Height - G.MeasureString(Text, Font).Height) / 2);
72 | }
73 |
74 | if (Enabled == false)
75 | using (SolidBrush disabledBrush = new SolidBrush(Color.FromArgb(100, 222, 222, 222)))
76 | {
77 | G.FillPath(disabledBrush, GlobalHelpers.GetRoundedRect(new Rectangle(0, 0, 13, 13), 3));
78 | G.DrawString(Text, Font, disabledBrush, 15, (Height - G.MeasureString(Text, Font).Height) / 2);
79 | }
80 | }
81 | }
82 | }
--------------------------------------------------------------------------------
/MentQ/MentQDefaults.cs:
--------------------------------------------------------------------------------
1 | #region
2 |
3 | using System.Drawing;
4 |
5 | #endregion
6 |
7 | namespace MentQ
8 | {
9 | internal struct MentQDefaults
10 | {
11 | public static readonly Color MentQBlue = Color.FromArgb(25, 105, 205);
12 | }
13 | }
--------------------------------------------------------------------------------
/MentQ/MentQEllipticalProgress.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Drawing;
3 | using System.Drawing.Drawing2D;
4 | using System.Windows.Forms;
5 |
6 | namespace MentQ
7 | {
8 | [Category("MentQ")]
9 | public class MentQEllipticalProgress : ProgressBar
10 | {
11 | private Color _hatchBrushColor;
12 | private HatchStyle _hatchBrushStyle;
13 | private bool _useHatchBrush;
14 |
15 |
16 | public MentQEllipticalProgress()
17 | {
18 | Size = new Size(70, 70);
19 | BackColor = MentQDefaults.MentQBlue;
20 | ForeColor = Color.Black;
21 | DoubleBuffered = true;
22 | SetStyle(
23 | ControlStyles.CacheText | ControlStyles.AllPaintingInWmPaint |
24 | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
25 | Font = new Font("Verdana", 8);
26 | HatchBrushStyle = HatchStyle.DarkDownwardDiagonal;
27 | HatchBrushSecondaryColor = Color.FromArgb(30, 200, 200, 200);
28 | UseHatchBrush = false;
29 | Text = "Percent";
30 | }
31 |
32 | [Browsable(true)]
33 | [EditorBrowsable(EditorBrowsableState.Always)]
34 | [Bindable(false)]
35 | [Category("Appearance")]
36 | public override string Text
37 | {
38 | get { return base.Text; }
39 | set
40 | {
41 | base.Text = value;
42 | Invalidate();
43 | }
44 | }
45 |
46 | [Browsable(true)]
47 | [EditorBrowsable(EditorBrowsableState.Always)]
48 | [Bindable(false)]
49 | [Category("Appearance")]
50 | public override Font Font
51 | {
52 | get { return base.Font; }
53 | set { base.Font = value; }
54 | }
55 |
56 | [Category("Appearance")]
57 | public HatchStyle HatchBrushStyle
58 | {
59 | get { return _hatchBrushStyle; }
60 | set
61 | {
62 | _hatchBrushStyle = value;
63 | Invalidate();
64 | }
65 | }
66 |
67 | [Category("Appearance")]
68 | public Color HatchBrushSecondaryColor
69 | {
70 | get { return _hatchBrushColor; }
71 | set
72 | {
73 | _hatchBrushColor = value;
74 | Invalidate();
75 | }
76 | }
77 |
78 | [Category("Appearance")]
79 | public bool UseHatchBrush
80 | {
81 | get { return _useHatchBrush; }
82 | set
83 | {
84 | _useHatchBrush = value;
85 | Invalidate();
86 | }
87 | }
88 |
89 | protected override void OnPaint(PaintEventArgs e)
90 | {
91 | Graphics G = e.Graphics;
92 | G.SmoothingMode = SmoothingMode.HighQuality;
93 | G.Clear(Parent.BackColor);
94 | if (UseHatchBrush)
95 | using (HatchBrush backColorBrush = new HatchBrush(HatchBrushStyle, HatchBrushSecondaryColor, BackColor))
96 | {
97 | G.FillPie(backColorBrush, 0, 0, Width - 1, Height - 1, 270, (int) (360 / (float) Maximum * Value));
98 | }
99 | else
100 | using (SolidBrush backColorBrush = new SolidBrush(BackColor))
101 | {
102 | G.FillPie(backColorBrush, 0, 0, Width - 1, Height - 1, 270, (int) (360 / (float) Maximum * Value));
103 | }
104 |
105 | using (SolidBrush backBrush = new SolidBrush(Color.FromArgb(25, 45, 45, 54)))
106 | {
107 | G.FillEllipse(backBrush, 0, 0, Width - 1, Height - 1);
108 | }
109 |
110 | using (SolidBrush parentBrush = new SolidBrush(Parent.BackColor))
111 | {
112 | G.FillEllipse(parentBrush, 4, 4, Width - 9, Height - 9);
113 | }
114 |
115 | using (SolidBrush foreColorBrush = new SolidBrush(ForeColor))
116 | {
117 | G.DrawString(Value.ToString(), Font, foreColorBrush,
118 | (Width - G.MeasureString(Value.ToString(), Font).Width) / 2,
119 | (Height - G.MeasureString(Value.ToString(), Font).Height) / 2 -
120 | (string.IsNullOrEmpty(Text) ? 0 : 2));
121 | if (!string.IsNullOrEmpty(Text))
122 | using (SolidBrush titleBrush = new SolidBrush(Color.FromArgb(150, ForeColor)))
123 | using (Font titleFont = new Font("Segoe UI", 6, FontStyle.Bold))
124 | {
125 | G.DrawString(Text.ToUpper(), titleFont, titleBrush,
126 | (Width - G.MeasureString(Text.ToUpper(), titleFont).Width) / 2,
127 | (Height - G.MeasureString(Text.ToUpper(), titleFont).Height) / 2 + 10);
128 | }
129 | }
130 |
131 | base.OnPaint(e);
132 | }
133 | }
134 | }
--------------------------------------------------------------------------------
/MentQ/MentQGroupBox.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Drawing;
5 | using System.Windows.Forms;
6 |
7 | namespace MentQ
8 | {
9 | [Category("MentQ")]
10 | public class MentQGroupBox : ContainerControl
11 | {
12 | public delegate void CloseChangedEventHandler(object sender, EventArgs e);
13 |
14 | private readonly Image downArrow =
15 | GlobalHelpers.TuneTransparency(GlobalHelpers.Base64ToImage(GlobalHelpers.DownArrowBase64String), 80, true);
16 |
17 | private readonly List invisibleControls = new List();
18 |
19 | private readonly Image upArrow =
20 | GlobalHelpers.TuneTransparency(GlobalHelpers.Base64ToImage(GlobalHelpers.DownArrowBase64String), 80, true);
21 |
22 | private bool _closed;
23 |
24 | private int lastHeight;
25 |
26 | public MentQGroupBox()
27 | {
28 | BackColor = Color.FromArgb(255, 255, 255);
29 | ForeColor = Color.FromArgb(20, 20, 20);
30 | BorderColor = Color.FromArgb(180, 180, 180);
31 | Font = new Font("Segoe UI", 8.25F);
32 | SetStyle(
33 | ControlStyles.AllPaintingInWmPaint | ControlStyles.CacheText | ControlStyles.OptimizedDoubleBuffer |
34 | ControlStyles.ResizeRedraw, true);
35 | Size = new Size(150, 100);
36 | Closable = false;
37 | upArrow.RotateFlip(RotateFlipType.RotateNoneFlipY);
38 | }
39 |
40 | private Color _borderColor { get; set; }
41 |
42 | [Category("Appearance")]
43 | public Color BorderColor
44 | {
45 | get { return _borderColor; }
46 | set
47 | {
48 | _borderColor = value;
49 | Invalidate();
50 | }
51 | }
52 |
53 | [Category("Appearance")]
54 | public override string Text
55 | {
56 | get { return base.Text; }
57 | set
58 | {
59 | base.Text = value;
60 | Invalidate();
61 | }
62 | }
63 |
64 | [Category("Appearance")]
65 | public bool Closed
66 | {
67 | get { return _closed; }
68 | set
69 | {
70 | _closed = value;
71 | OnCloseChanged();
72 | Invalidate();
73 | }
74 | }
75 |
76 | [Category("Appearance")] public bool Closable { get; set; }
77 |
78 | [Category("Appearance")] public Color UpperColor { get; set; }
79 |
80 | [Category("Appearance")] public Image Icon { get; set; }
81 |
82 | public event CloseChangedEventHandler ClosedChanged;
83 |
84 | protected override void OnPaint(PaintEventArgs e)
85 | {
86 | Graphics G = e.Graphics;
87 | G.Clear(Parent.BackColor);
88 | using (SolidBrush brush = new SolidBrush(BackColor))
89 | {
90 | G.FillRectangle(brush, 0, 0, Width, Height);
91 | }
92 |
93 | using (SolidBrush upperBrush = new SolidBrush(UpperColor))
94 | {
95 | G.FillRectangle(upperBrush, 0, 0, Width, 26);
96 | }
97 |
98 | using (Pen borderPen = new Pen(BorderColor))
99 | {
100 | G.DrawRectangle(borderPen, 0, 0, Width - 1, Height - 1);
101 | G.DrawLine(borderPen, 0, 26, Width - 1, 26);
102 | }
103 |
104 | using (SolidBrush textBrush = new SolidBrush(ForeColor))
105 | {
106 | G.DrawString(Text, Font, textBrush, Icon == null ? 7 : 28,
107 | (26 - G.MeasureString(Text, Font).Height) / 2);
108 | }
109 |
110 | if (Icon != null)
111 | G.DrawImage(Icon, new Rectangle(8, 5, 16, 16));
112 | if (Closable)
113 | if (Closed)
114 | G.DrawImage(upArrow, Width - downArrow.Width - 8, (26 - downArrow.Height) / 2);
115 | else
116 | G.DrawImage(downArrow, Width - downArrow.Width - 8, (26 - downArrow.Height) / 2);
117 | }
118 |
119 |
120 | protected override void OnMouseDown(MouseEventArgs e)
121 | {
122 | if (Closable)
123 | if (e.X > Width - downArrow.Width - 8 && e.X < Width - 8 && e.Y > (26 - downArrow.Height) / 2 &&
124 | e.Y < (26 - downArrow.Height) / 2 + downArrow.Height)
125 | Closed = !Closed;
126 |
127 | base.OnMouseDown(e);
128 | }
129 |
130 | public void OnCloseChanged()
131 | {
132 | if (Closed)
133 | {
134 | lastHeight = Size.Height;
135 | foreach (Control control in Controls)
136 | if (control.Location.Y > 27)
137 | if (control.Visible)
138 | control.Visible = false;
139 | else
140 | invisibleControls.Add(control);
141 |
142 | Size = new Size(Width, 27);
143 | }
144 | else
145 | {
146 | foreach (Control control in Controls)
147 | if (!invisibleControls.Contains(control))
148 | control.Visible = true;
149 | Size = new Size(Width, lastHeight);
150 | invisibleControls.Clear();
151 | }
152 |
153 | if (ClosedChanged != null)
154 | ClosedChanged(this, new EventArgs());
155 | }
156 | }
157 | }
--------------------------------------------------------------------------------
/MentQ/MentQInfoBox.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Drawing;
4 | using System.Drawing.Drawing2D;
5 | using System.Windows.Forms;
6 |
7 | namespace MentQ
8 | {
9 | [Category("MentQ")]
10 | public class MentQInfoBox : Control
11 | {
12 | public enum Iconlayout
13 | {
14 | None,
15 | Scaled
16 | }
17 |
18 | public enum UnderlineStyle
19 | {
20 | ImageOnly,
21 | Full,
22 | None,
23 | ExcludeImage
24 | }
25 |
26 | private bool _antialias;
27 | private Image _backgroundImage;
28 | private Image _cachedTransparentImage;
29 | private Iconlayout _iconLayout;
30 | private bool _imageContainer;
31 | private Color _imageContainerColor;
32 | private int _imageTransparency;
33 | private string _title;
34 | private UnderlineStyle _underline;
35 | private Color _underlineColor;
36 | private int _underlineSize;
37 |
38 |
39 | public MentQInfoBox()
40 | {
41 | ImageContainerColor = Color.FromArgb(100, 30, 30, 30);
42 | ImageContainer = false;
43 | UnderlineSize = 4;
44 | Underline = UnderlineStyle.Full;
45 | UnderlineColor = Color.FromArgb(100, 70, 70, 70);
46 | AntiAliasImage = true;
47 | Size = new Size(220, 65);
48 | BackColor = MentQDefaults.MentQBlue;
49 | Font = new Font("Verdana", (float) 11.25, FontStyle.Regular);
50 | ForeColor = Color.White;
51 | DoubleBuffered = true;
52 | ImageTransparency = 255;
53 | Title = "Title";
54 | SetStyle(
55 | ControlStyles.CacheText | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint |
56 | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
57 | }
58 |
59 | [Category("Appearance")]
60 | public override string Text
61 | {
62 | get { return base.Text; }
63 | set
64 | {
65 | base.Text = value;
66 | Invalidate();
67 | }
68 | }
69 |
70 | [Category("Appearance")]
71 | public string Title
72 | {
73 | get { return _title; }
74 | set
75 | {
76 | _title = value;
77 | Invalidate();
78 | }
79 | }
80 |
81 | [Category("Appearance")]
82 | public int ImageTransparency
83 | {
84 | get { return _imageTransparency; }
85 | set
86 | {
87 | _imageTransparency = value;
88 | if (BackgroundImage != null)
89 | if (ImageTransparency > 0)
90 | _cachedTransparentImage = EditBackgroundImage(BackgroundImage);
91 | else
92 | _cachedTransparentImage = null;
93 | Invalidate();
94 | }
95 | }
96 |
97 | [Category("Appearance")]
98 | public new Iconlayout BackgroundImageLayout
99 | {
100 | get { return _iconLayout; }
101 | set
102 | {
103 | if (BackgroundImage != null)
104 | if (ImageTransparency > 0)
105 | _cachedTransparentImage = EditBackgroundImage(BackgroundImage);
106 | _iconLayout = value;
107 | Invalidate();
108 | }
109 | }
110 |
111 | [Category("Appearance")]
112 | public bool AntiAliasImage
113 | {
114 | get { return _antialias; }
115 | set
116 | {
117 | _antialias = value;
118 | if (BackgroundImage != null)
119 | if (ImageTransparency > 0)
120 |
121 | _cachedTransparentImage = EditBackgroundImage(BackgroundImage);
122 | Invalidate();
123 | }
124 | }
125 |
126 | [Category("Appearance")]
127 | public UnderlineStyle Underline
128 | {
129 | get { return _underline; }
130 | set
131 | {
132 | if ((value == UnderlineStyle.Full) | (value == UnderlineStyle.None))
133 | _underline = value;
134 | if ((value == UnderlineStyle.ImageOnly) | (value == UnderlineStyle.ExcludeImage))
135 | if (BackgroundImage != null)
136 | _underline = value;
137 | Invalidate();
138 | }
139 | }
140 |
141 | [Category("Appearance")]
142 | public int UnderlineSize
143 | {
144 | get { return _underlineSize; }
145 | set
146 | {
147 | _underlineSize = value;
148 | Invalidate();
149 | }
150 | }
151 |
152 | [Category("Appearance")]
153 | public Color UnderlineColor
154 | {
155 | get { return _underlineColor; }
156 | set
157 | {
158 | _underlineColor = value;
159 | Invalidate();
160 | }
161 | }
162 |
163 | [Category("Appearance")]
164 | public bool ImageContainer
165 | {
166 | get { return _imageContainer; }
167 | set
168 | {
169 | _imageContainer = BackgroundImage == null ? false : value;
170 |
171 | Invalidate();
172 | }
173 | }
174 |
175 | [Category("Appearance")]
176 | public Color ImageContainerColor
177 | {
178 | get { return _imageContainerColor; }
179 | set
180 | {
181 | _imageContainerColor = value;
182 | Invalidate();
183 | }
184 | }
185 |
186 | public override Image BackgroundImage
187 | {
188 | get { return _backgroundImage; }
189 | set
190 | {
191 | _backgroundImage = value;
192 | if (ImageTransparency > 0)
193 | _cachedTransparentImage = EditBackgroundImage(BackgroundImage);
194 | Invalidate();
195 | }
196 | }
197 |
198 | protected override void OnPaint(PaintEventArgs e)
199 | {
200 | Graphics G = e.Graphics;
201 |
202 | G.Clear(Parent.BackColor);
203 |
204 | G.SmoothingMode = SmoothingMode.HighQuality;
205 |
206 | using (
207 | SolidBrush backColorBrush = new SolidBrush(BackColor),
208 | foreColorBrush = new SolidBrush(ForeColor),
209 | titleColorBrush = new SolidBrush(Color.FromArgb(180, ForeColor)))
210 | {
211 | G.FillPath(backColorBrush,
212 | GlobalHelpers.GetRoundedRect(new Rectangle(-1, -1, Width + 1, Height + 1), 5));
213 | DrawImage(G);
214 | if (BackgroundImage != null)
215 | DrawUnderline(G, CalculateImageSize(BackgroundImage));
216 | else
217 | DrawUnderline(G, new SizeF());
218 |
219 | if (!string.IsNullOrEmpty(Title))
220 | G.DrawString(Title.ToUpper(), new Font("Verdana", 8),
221 | titleColorBrush,
222 | 12, (Height - G.MeasureString(Text, Font).Height) / 2 - 7);
223 |
224 | G.DrawString(Text, Font, foreColorBrush, 12,
225 | (Height - G.MeasureString(Text, Font).Height) / 2 + (string.IsNullOrEmpty(Title) ? 0 : 8));
226 | }
227 |
228 | if (!Enabled)
229 | using (SolidBrush disabledBrush = new SolidBrush(Color.FromArgb(100, 222, 222, 222)))
230 | {
231 | G.FillPath(disabledBrush,
232 | GlobalHelpers.GetRoundedRect(new Rectangle(-1, -1, Width + 1, Height + 1), 4));
233 | }
234 |
235 | base.OnPaint(e);
236 | }
237 |
238 | private void DrawImage(Graphics G)
239 | {
240 | #region "Background Image"
241 |
242 | if (BackgroundImage != null)
243 | {
244 | SizeF destinationSize = CalculateImageSize(BackgroundImage);
245 |
246 | #region "Image Container"
247 |
248 | if (ImageContainer)
249 | {
250 | G.SetClip(CalculateContainerPosition(destinationSize));
251 |
252 | using (SolidBrush brush = new SolidBrush(ImageContainerColor))
253 | {
254 | G.FillPath(brush,
255 | GlobalHelpers.GetRoundedRect(new RectangleF(-1, -1, Width + 1, Height + 1), 5));
256 | }
257 |
258 | G.ResetClip();
259 | }
260 |
261 | #endregion
262 |
263 |
264 | #region "Draw Image"
265 |
266 | if (_cachedTransparentImage != null)
267 | if (BackgroundImageLayout == Iconlayout.Scaled)
268 | G.DrawImage(_cachedTransparentImage,
269 | new RectangleF(
270 | Width - destinationSize.Width - 5, (Height - destinationSize.Height) / 2,
271 | destinationSize.Width, destinationSize.Height));
272 | else
273 | G.DrawImage(_cachedTransparentImage, Width - BackgroundImage.Width - 5,
274 | (Height - BackgroundImage.Height) / 2);
275 |
276 | #endregion
277 | }
278 |
279 | #endregion
280 | }
281 |
282 | private void DrawUnderline(Graphics G, SizeF imageSizeF)
283 | {
284 | using (
285 | SolidBrush underlineBrush = new SolidBrush(UnderlineColor), backColorBrush = new SolidBrush(BackColor))
286 | {
287 | if (Underline != UnderlineStyle.None)
288 | {
289 | Rectangle clipping = new Rectangle(0, Height - UnderlineSize, Width, UnderlineSize);
290 | if (BackgroundImage != null)
291 | {
292 | Rectangle imageContainerPosition = CalculateContainerPosition(imageSizeF);
293 | switch (Underline)
294 | {
295 | case UnderlineStyle.ImageOnly:
296 | if (BackgroundImage != null)
297 | clipping = new Rectangle(imageContainerPosition.X, Height - UnderlineSize,
298 | imageContainerPosition.Width, UnderlineSize);
299 | break;
300 | case UnderlineStyle.ExcludeImage:
301 | if (BackgroundImage != null)
302 | clipping = new Rectangle(0, Height - UnderlineSize,
303 | Width - imageContainerPosition.Width + 5, UnderlineSize);
304 | break;
305 | }
306 | }
307 |
308 | G.SetClip(clipping);
309 | G.FillPath(underlineBrush,
310 | GlobalHelpers.GetRoundedRect(new Rectangle(-1, -1, Width + 1, Height + 1), 5));
311 | G.ResetClip();
312 | //DrawImage(G);
313 | //G.FillPath(underlineBrush,
314 | // GlobalHelpers.GetRoundedRect(new Rectangle(-1, -1, Width + 1, Height + 1), 5));
315 |
316 | //G.SetClip(new Rectangle(-1, -1, Width + 1, Height - UnderlineSize));
317 | //G.FillPath(backColorBrush,
318 | // GlobalHelpers.GetRoundedRect(new Rectangle(-1, -1, Width + 1, Height - UnderlineSize), 5));
319 | //DrawImage(G);
320 | //G.ResetClip();
321 | }
322 | }
323 | }
324 |
325 | private Image EditBackgroundImage(Image value)
326 | {
327 | return GlobalHelpers.TuneTransparency(value, ImageTransparency,
328 | AntiAliasImage);
329 | }
330 |
331 | private SizeF CalculateImageSize(Image value)
332 | {
333 | if (BackgroundImageLayout == Iconlayout.Scaled)
334 | {
335 | float ratio = (float) value.Height / Height;
336 | return new SizeF(value.Width / ratio - 15,
337 | value.Height / ratio - 15);
338 | }
339 |
340 | return new SizeF(value.Width, value.Height);
341 | }
342 |
343 | private Rectangle CalculateContainerPosition(SizeF imageSize)
344 | {
345 | return new Rectangle(Width - Convert.ToInt32(imageSize.Width) - 10, 0,
346 | Convert.ToInt32(imageSize.Width) + 15,
347 | Height);
348 | }
349 | }
350 | }
--------------------------------------------------------------------------------
/MentQ/MentQNotification.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Drawing;
3 | using System.Drawing.Drawing2D;
4 | using System.Windows.Forms;
5 |
6 | namespace MentQ
7 | {
8 | [Category("MentQ")]
9 | public class MentQNotification : Control
10 | {
11 | public enum TextAlign
12 | {
13 | Left,
14 | Center
15 | }
16 |
17 | private Color _effectColor;
18 | private Styles _style;
19 |
20 | public MentQNotification()
21 | {
22 | UnderlineSize = 2;
23 | BackColor = MentQDefaults.MentQBlue;
24 | Font = new Font("Verdana", 7);
25 | ForeColor = Color.White;
26 | Size = new Size(60, 15);
27 | Style = Styles.None;
28 | EffectColor = Color.FromArgb(120, 65, 65, 65);
29 | SetStyle(
30 | ControlStyles.AllPaintingInWmPaint | ControlStyles.CacheText | ControlStyles.OptimizedDoubleBuffer |
31 | ControlStyles.ResizeRedraw, true);
32 | TextAlignment = TextAlign.Center;
33 | }
34 |
35 | [Category("Appearance")]
36 | public override string Text
37 | {
38 | get { return base.Text; }
39 | set
40 | {
41 | base.Text = value;
42 | Invalidate();
43 | }
44 | }
45 |
46 | [Category("Appearance")]
47 | public Styles Style
48 | {
49 | get { return _style; }
50 | set
51 | {
52 | _style = value;
53 | Invalidate();
54 | }
55 | }
56 |
57 | [Category("Appearance")]
58 | public Color EffectColor
59 | {
60 | get { return _effectColor; }
61 | set
62 | {
63 | _effectColor = value;
64 | Invalidate();
65 | }
66 | }
67 |
68 | [Category("Appearance")] public int UnderlineSize { get; set; }
69 |
70 | [Category("Appearance")] public TextAlign TextAlignment { get; set; }
71 |
72 |
73 | protected override void OnPaint(PaintEventArgs e)
74 | {
75 | int y = Style == Styles.Underlined ? -UnderlineSize + 1 : 0;
76 | Graphics G = e.Graphics;
77 | G.SmoothingMode = SmoothingMode.HighQuality;
78 | G.Clear(Parent.BackColor);
79 | using (SolidBrush brush = new SolidBrush(BackColor))
80 | {
81 | if (Style == Styles.Outlined)
82 | {
83 | G.FillPath(brush, GlobalHelpers.GetRoundedRect(new Rectangle(0, 0, Width - 1, Height - 1), 5));
84 | using (Pen outlinePen = new Pen(EffectColor))
85 | {
86 | G.DrawPath(outlinePen,
87 | GlobalHelpers.GetRoundedRect(new Rectangle(0, 0, Width - 1, Height - 1), 5));
88 | }
89 | }
90 | else if (Style == Styles.Underlined)
91 | {
92 | using (SolidBrush darkBrush = new SolidBrush(EffectColor))
93 | {
94 | G.FillPath(darkBrush,
95 | GlobalHelpers.GetRoundedRect(new Rectangle(-1, -1, Width + 1, Height + 1), 5));
96 | }
97 |
98 | G.SetClip(new Rectangle(0, 0, Width, Height - UnderlineSize));
99 | G.FillPath(brush,
100 | GlobalHelpers.GetRoundedRect(new Rectangle(-1, -1, Width + 1, Height - UnderlineSize + 1), 5));
101 | }
102 | else
103 | {
104 | G.FillPath(brush, GlobalHelpers.GetRoundedRect(new Rectangle(-1, -1, Width + 1, Height + 1), 5));
105 | }
106 | }
107 |
108 | if (!string.IsNullOrEmpty(Text))
109 |
110 | using (SolidBrush textBrush = new SolidBrush(ForeColor))
111 | {
112 | if (TextAlignment == TextAlign.Center)
113 | G.DrawString(Text, Font, textBrush, (Width - G.MeasureString(Text, Font).Width) / 2,
114 | (Height - G.MeasureString(Text, Font).Height) / 2 + y);
115 | if (TextAlignment == TextAlign.Left)
116 | G.DrawString(Text, Font, textBrush, 4, (Height - G.MeasureString(Text, Font).Height) / 2 + y);
117 | }
118 |
119 | base.OnPaint(e);
120 | }
121 | }
122 | }
--------------------------------------------------------------------------------
/MentQ/MentQNumericUpDown.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Drawing;
4 | using System.Drawing.Drawing2D;
5 | using System.Windows.Forms;
6 |
7 | namespace MentQ
8 | {
9 | [Category("MentQ")]
10 | public class MentQNumericUpDown : Control
11 | {
12 | public MentQNumericUpDown()
13 | {
14 | BackColor = Color.White;
15 | SelectedColor = MentQDefaults.MentQBlue;
16 | DoubleBuffered = true;
17 | SetStyle(
18 | ControlStyles.AllPaintingInWmPaint | ControlStyles.CacheText | ControlStyles.OptimizedDoubleBuffer |
19 | ControlStyles.UserPaint, true);
20 | Padding = new Padding(3);
21 | Size = new Size(90, 24);
22 | Size buttonSize = CalculateButtonSize();
23 | MentQButton upButton = new MentQButton
24 | {
25 | Anchor = AnchorStyles.Right | AnchorStyles.Top,
26 | Size = buttonSize,
27 | Location = new Point(Width - Padding.Right - buttonSize.Width, Padding.Top),
28 | Font = new Font("Segoe UI Symbol", 6),
29 | Text = "\uE010"
30 | };
31 | MentQButton downButton = new MentQButton
32 | {
33 | Anchor = AnchorStyles.Right | AnchorStyles.Top,
34 | Size = buttonSize,
35 | Location = new Point(Width - Padding.Right - buttonSize.Width,
36 | Height - Padding.Bottom - buttonSize.Height),
37 | Font = new Font("Segoe UI Symbol", 6),
38 | Text = "\uE011"
39 | };
40 | InternalNumericUpDown = new NumericUpDown();
41 | InternalNumericUpDown.BackColor = BackColor;
42 | InternalNumericUpDown.BorderStyle = BorderStyle.None;
43 |
44 | // Remove the default numeric up down buttons
45 | InternalNumericUpDown.Controls.RemoveAt(0);
46 | UpButton = upButton;
47 | DownButton = downButton;
48 | UpButton.Click += (sender, args) => InternalNumericUpDown.UpButton();
49 | DownButton.Click += (sender, args) => InternalNumericUpDown.DownButton();
50 | Controls.Add(InternalNumericUpDown);
51 | InternalNumericUpDown.SendToBack();
52 | Controls.Add(UpButton);
53 | UpButton.BringToFront();
54 | Controls.Add(DownButton);
55 | DownButton.BringToFront();
56 |
57 |
58 | }
59 |
60 | public NumericUpDown InternalNumericUpDown { get; }
61 | private MentQButton UpButton { get; }
62 | private MentQButton DownButton { get; }
63 | public Color SelectedColor { get; set; }
64 | [Category("Appearance")]
65 | public decimal Value
66 | {
67 | get { return InternalNumericUpDown.Value; }
68 | set { InternalNumericUpDown.Value = value; }
69 | }
70 | protected override void OnHandleCreated(EventArgs e)
71 | {
72 | AdjustSize();
73 | base.OnHandleCreated(e);
74 |
75 | }
76 |
77 | protected override void OnCreateControl()
78 | {
79 | base.OnCreateControl();
80 | MaximumSize = new Size(Int16.MaxValue, 24);
81 | MinimumSize = new Size(0, 24);
82 | }
83 |
84 | protected override void OnPaddingChanged(EventArgs e)
85 | {
86 | AdjustSize();
87 | base.OnPaddingChanged(e);
88 | }
89 |
90 | protected override void OnSizeChanged(EventArgs e)
91 | {
92 | base.OnSizeChanged(e);
93 | AdjustSize();
94 | }
95 |
96 | private void AdjustSize()
97 | {
98 | if (InternalNumericUpDown != null)
99 | {
100 | InternalNumericUpDown.Width = Width - Padding.Horizontal - 5;
101 | InternalNumericUpDown.Location = new Point(Padding.Left,
102 | Padding.Top + (Height - Padding.Vertical - InternalNumericUpDown.Height) / 2 + 1);
103 | }
104 |
105 | if (UpButton != null && DownButton != null)
106 | {
107 | Size buttonSize = CalculateButtonSize();
108 | UpButton.Size = buttonSize;
109 | DownButton.Size = buttonSize;
110 | DownButton.Location = new Point(Width - Padding.Right - buttonSize.Width,
111 | Height - Padding.Bottom - buttonSize.Height);
112 | }
113 | }
114 |
115 | private Size CalculateButtonSize()
116 | {
117 | return new Size(20, (Height - Padding.Top - Padding.Bottom) / 2 - 1);
118 | }
119 |
120 | protected override void OnPaint(PaintEventArgs e)
121 | {
122 | Graphics G = e.Graphics;
123 | G.SmoothingMode = SmoothingMode.HighQuality;
124 | G.Clear(BackColor);
125 | using (SolidBrush brush = new SolidBrush(BackColor))
126 | {
127 | G.FillPath(brush, GlobalHelpers.GetRoundedRect(new Rectangle(0, 0, Width - 1, Height - 1), 4));
128 | }
129 |
130 | using (Pen pen = new Pen(Color.Gray))
131 | {
132 | G.DrawPath(pen, GlobalHelpers.GetRoundedRect(new Rectangle(0, 0, Width - 1, Height - 1), 4));
133 | }
134 | }
135 | }
136 | }
--------------------------------------------------------------------------------
/MentQ/MentQProgressBar.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Drawing;
4 | using System.Drawing.Drawing2D;
5 | using System.Windows.Forms;
6 |
7 | namespace MentQ
8 | {
9 | [Category("MentQ")]
10 | public class MentQProgressBar : ProgressBar
11 | {
12 | private Color _alternateForeColor;
13 | private bool _underline;
14 | private Color _underlineColor;
15 | private int _underlineSize;
16 |
17 |
18 | public MentQProgressBar()
19 | {
20 | InactiveBackColor = Color.FromArgb(150, 200, 200, 200);
21 | CornerRounding = 5;
22 | Size = new Size(170, 20);
23 | UnderlineSize = 2;
24 | UnderlineColor = Color.FromArgb(100, 70, 70, 70);
25 | BackColor = MentQDefaults.MentQBlue;
26 | ForeColor = Color.White;
27 | DoubleBuffered = true;
28 | SetStyle(
29 | ControlStyles.CacheText | ControlStyles.AllPaintingInWmPaint |
30 | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
31 | Font = new Font("Segoe UI", 7);
32 | AlternateForeColor = Color.FromArgb(40, 40, 40);
33 | }
34 |
35 |
36 | [Category("Appearance")] public bool DiagonalLines { get; set; }
37 |
38 | [Browsable(true)]
39 | [EditorBrowsable(EditorBrowsableState.Always)]
40 | [Bindable(false)]
41 | [Category("Appearance")]
42 | public override string Text
43 | {
44 | get { return base.Text; }
45 | set
46 | {
47 | base.Text = value;
48 | Invalidate();
49 | }
50 | }
51 |
52 | [Category("Appearance")]
53 | public Color AlternateForeColor
54 | {
55 | get { return _alternateForeColor; }
56 | set
57 | {
58 | _alternateForeColor = value;
59 | Invalidate();
60 | }
61 | }
62 |
63 | [Category("Appearance")]
64 | public bool Underline
65 | {
66 | get { return _underline; }
67 | set
68 | {
69 | _underline = value;
70 | Invalidate();
71 | }
72 | }
73 |
74 | [Category("Appearance")]
75 | public int UnderlineSize
76 | {
77 | get { return _underlineSize; }
78 | set
79 | {
80 | _underlineSize = value;
81 | Invalidate();
82 | }
83 | }
84 |
85 | [Category("Appearance")]
86 | public Color UnderlineColor
87 | {
88 | get { return _underlineColor; }
89 | set
90 | {
91 | _underlineColor = value;
92 | Invalidate();
93 | }
94 | }
95 |
96 | [Category("Appearance")] public int CornerRounding { get; set; }
97 |
98 | [Category("Appearance")] public Color InactiveBackColor { get; set; }
99 |
100 | [Browsable(true)]
101 | [EditorBrowsable(EditorBrowsableState.Always)]
102 | [Bindable(false)]
103 | [Category("Appearance")]
104 | public override Font Font
105 | {
106 | get { return base.Font; }
107 | set { base.Font = value; }
108 | }
109 |
110 | protected override void OnPaint(PaintEventArgs e)
111 | {
112 | Graphics G = e.Graphics;
113 |
114 | //Get the region of the colored part
115 | float percent = (float) Width / Maximum * Value;
116 |
117 | //Transparent background effect
118 | G.Clear(Parent.BackColor);
119 | G.SmoothingMode = SmoothingMode.HighQuality;
120 |
121 | //Set clipping to reduce anti aliasing
122 | G.SetClip(new RectangleF(0, 0, Width, Height));
123 |
124 | //Create the background brush
125 | using (SolidBrush inactiveBackColorBrush = new SolidBrush(InactiveBackColor))
126 |
127 | //Draw the background
128 | {
129 | G.FillPath(inactiveBackColorBrush,
130 | GlobalHelpers.GetRoundedRect(new RectangleF(-1, -1, Width + 1, Height + 1), CornerRounding));
131 | G.SetClip(new Rectangle(0, 0, Convert.ToInt32(percent), Height));
132 | using (SolidBrush backColorBrush = new SolidBrush(BackColor))
133 | {
134 | G.FillPath(backColorBrush,
135 | GlobalHelpers.GetRoundedRect(new RectangleF(-1, -1, percent + 1, Height + 1), CornerRounding));
136 | }
137 |
138 | if (Underline)
139 | using (SolidBrush underlineBrush = new SolidBrush(UnderlineColor))
140 | {
141 | G.SetClip(new Rectangle(0, Height - UnderlineSize, Convert.ToInt32(percent), UnderlineSize));
142 | G.FillPath(underlineBrush,
143 | GlobalHelpers.GetRoundedRect(new RectangleF(-1, -1, percent + 1, Height + 1),
144 | CornerRounding));
145 | }
146 | }
147 |
148 |
149 | using (SolidBrush foreColorBrush = new SolidBrush(ForeColor))
150 | using (SolidBrush alternateForeColorBrush = new SolidBrush(AlternateForeColor))
151 | {
152 | G.SetClip(new Rectangle(0, 0, Convert.ToInt32(percent), Height));
153 |
154 | G.DrawString(Text, Font, foreColorBrush, 5,
155 | (Height - G.MeasureString(Text, Font).Height) / 2);
156 | G.SetClip(new Rectangle(Convert.ToInt32(percent), 0, Width, Height));
157 | G.DrawString(Text, Font, alternateForeColorBrush, 5,
158 | (Height - G.MeasureString(Text, Font).Height) / 2);
159 | }
160 |
161 |
162 | if (!Enabled)
163 | using (SolidBrush disabledBrush = new SolidBrush(Color.FromArgb(100, 222, 222, 222)))
164 | {
165 | G.FillPath(disabledBrush,
166 | GlobalHelpers.GetRoundedRect(new RectangleF(-1, -1, Width + 1, Height + 1), CornerRounding));
167 | }
168 |
169 | G.ResetClip();
170 | base.OnPaint(e);
171 | }
172 | }
173 | }
--------------------------------------------------------------------------------
/MentQ/MentQRadioButton.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Drawing;
4 | using System.Drawing.Drawing2D;
5 | using System.Windows.Forms;
6 |
7 | namespace MentQ
8 | {
9 | [Category("MentQ")]
10 | public class MentQRadioButton : RadioButton
11 | {
12 | public MentQRadioButton()
13 | {
14 | Font = new Font("Verdana", 7);
15 | ForeColor = Color.Black;
16 | BackColor = MentQDefaults.MentQBlue;
17 | SetStyle(
18 | ControlStyles.CacheText | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint |
19 | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
20 | AutoSize = true;
21 | }
22 |
23 | [Category("Appearance")]
24 | public override string Text
25 | {
26 | get { return base.Text; }
27 | set
28 | {
29 | base.Text = value;
30 | Invalidate();
31 | }
32 | }
33 |
34 | public override Size GetPreferredSize(Size proposedSize)
35 | {
36 | return new Size(17 + Convert.ToInt32(Graphics.FromHwnd(Handle).MeasureString(Text, Font).Width), 14);
37 | }
38 |
39 |
40 | protected override void OnCreateControl()
41 | {
42 | DoubleBuffered = true;
43 | base.OnCreateControl();
44 | }
45 |
46 | protected override void OnPaint(PaintEventArgs e)
47 | {
48 | base.OnPaint(e);
49 | Graphics G = e.Graphics;
50 | G.SmoothingMode = SmoothingMode.HighQuality;
51 | G.Clear(Parent.BackColor);
52 | using (SolidBrush backBrush = new SolidBrush(Color.FromArgb(5, 30, 30, 30)))
53 | {
54 | G.FillEllipse(backBrush, 0, 0, 13, 13);
55 | }
56 |
57 | if (Checked)
58 | using (SolidBrush backColorBrush = new SolidBrush(BackColor))
59 | {
60 | G.FillEllipse(backColorBrush, 3, 3, 7, 7);
61 | }
62 |
63 | using (Pen pen = new Pen(Color.FromArgb(85, 13, 13, 13)))
64 | {
65 | G.DrawEllipse(pen, 0, 0, 13, 13);
66 | }
67 |
68 | using (SolidBrush foreColorBrush = new SolidBrush(ForeColor))
69 | {
70 | G.DrawString(Text, Font, foreColorBrush, 15, (Height - G.MeasureString(Text, Font).Height) / 2);
71 | }
72 |
73 | if (Enabled == false)
74 | using (SolidBrush disabledBrush = new SolidBrush(Color.FromArgb(100, 222, 222, 222)))
75 | {
76 | G.FillEllipse(disabledBrush, 2, 2, 9, 19);
77 | G.DrawString(Text, Font, disabledBrush, 15, (Height - G.MeasureString(Text, Font).Height) / 2);
78 | }
79 | }
80 | }
81 | }
--------------------------------------------------------------------------------
/MentQ/MentQTabControl.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Drawing;
3 | using System.Drawing.Drawing2D;
4 | using System.Windows.Forms;
5 |
6 | namespace MentQ
7 | {
8 | [Category("MentQ")]
9 | public class MentQTabControl : TabControl
10 | {
11 | private Color _backColor;
12 |
13 | public MentQTabControl()
14 | {
15 | Alignment = TabAlignment.Left;
16 | SizeMode = TabSizeMode.Fixed;
17 | ItemSize = new Size(35, 175);
18 | SetStyle(
19 | ControlStyles.AllPaintingInWmPaint | ControlStyles.CacheText | ControlStyles.OptimizedDoubleBuffer |
20 | ControlStyles.ResizeRedraw | ControlStyles.UserPaint, true);
21 | BackColor = Color.FromArgb(55, 55, 55);
22 | ForeColor = Color.FromArgb(240, 240, 240, 240);
23 | Font = new Font("Segoe UI", 9);
24 | DrawMode = TabDrawMode.OwnerDrawFixed;
25 | SelectedColor = Color.FromArgb(200, 80, 20);
26 | }
27 |
28 | [Browsable(true)]
29 | [EditorBrowsable(EditorBrowsableState.Always)]
30 | [Bindable(false)]
31 | [Category("Appearance")]
32 | public new Color ForeColor
33 | {
34 | get { return base.ForeColor; }
35 | set
36 | {
37 | base.ForeColor = value;
38 | Invalidate();
39 | }
40 | }
41 |
42 | [Browsable(true)]
43 | [EditorBrowsable(EditorBrowsableState.Always)]
44 | [Bindable(false)]
45 | [Category("Appearance")]
46 | public new Color BackColor
47 | {
48 | get { return _backColor; }
49 | set
50 | {
51 | _backColor = value;
52 | Invalidate();
53 | }
54 | }
55 |
56 |
57 | [Category("Appearance")] public Color SelectedColor { get; set; }
58 |
59 | [Category("Appearance")]
60 | public override string Text
61 | {
62 | get { return base.Text; }
63 | set
64 | {
65 | base.Text = value;
66 | Invalidate();
67 | }
68 | }
69 |
70 | protected override void OnControlAdded(ControlEventArgs e)
71 | {
72 | if (e.Control.GetType() == typeof(TabPage))
73 | ((TabPage) e.Control).BackColor = SystemColors.Control;
74 | base.OnControlAdded(e);
75 | }
76 |
77 |
78 | protected override void OnPaint(PaintEventArgs e)
79 | {
80 | base.OnPaint(e);
81 |
82 | Graphics G = e.Graphics;
83 | G.InterpolationMode = InterpolationMode.HighQualityBicubic;
84 | //G.SmoothingMode = SmoothingMode.HighQuality;
85 | //G.InterpolationMode = InterpolationMode.High;
86 | //G.PixelOffsetMode = PixelOffsetMode.HighQuality;
87 | G.Clear(BackColor);
88 | int index = 0;
89 | using (SolidBrush unselectedForeColorBrush = new SolidBrush(Color.FromArgb(100, ForeColor)))
90 | using (SolidBrush foreColorBrush = new SolidBrush(ForeColor))
91 | using (SolidBrush selectedTabPageBrush = new SolidBrush(Color.FromArgb(40, 20, 20, 20)))
92 | {
93 | foreach (TabPage tabPage in TabPages)
94 | {
95 | if (index == SelectedIndex)
96 | {
97 | G.FillRectangle(selectedTabPageBrush, 0, index * ItemSize.Width, ItemSize.Height + 4,
98 | ItemSize.Width);
99 | G.DrawString(tabPage.Text, Font, foreColorBrush, 34,
100 | index * ItemSize.Width + (ItemSize.Width - G.MeasureString(tabPage.Text, Font).Height) / 2);
101 | using (SolidBrush solidBrush = new SolidBrush(SelectedColor))
102 | {
103 | G.FillRectangle(solidBrush, 0, ItemSize.Width * index, 3, ItemSize.Width);
104 | }
105 | }
106 |
107 | G.DrawString(tabPage.Text, Font, unselectedForeColorBrush, 34,
108 | index * ItemSize.Width + (ItemSize.Width - G.MeasureString(tabPage.Text, Font).Height) / 2);
109 | if (ImageList != null)
110 | {
111 | //if (tabPage.ImageIndex >= 0)
112 | // if (ImageList.Images.Count - 1 >= tabPage.ImageIndex)
113 | // G.DrawImage(
114 | // GlobalHelpers.TuneTransparency(ImageList.Images[tabPage.ImageIndex],
115 | // index == SelectedIndex ? 255 : 100, false), 12,
116 | // index * ItemSize.Width + (ItemSize.Width - ImageList.ImageSize.Height) / 2);
117 | //if (ImageList.Images.ContainsKey(tabPage.ImageKey))
118 | // G.DrawImage(
119 | // ImageList.Images[tabPage.ImageKey], 12,
120 | // index * ItemSize.Width + (ItemSize.Width - ImageList.ImageSize.Height) / 2);
121 | int imageIndex = tabPage.ImageIndex;
122 | if (!string.IsNullOrEmpty(tabPage.ImageKey))
123 | imageIndex = ImageList.Images.IndexOfKey(tabPage.ImageKey);
124 | if (imageIndex > -1)
125 | ImageList.Draw(G, 12,
126 | index * ItemSize.Width + (ItemSize.Width - ImageList.ImageSize.Height) / 2, imageIndex);
127 | }
128 |
129 | index++;
130 | }
131 | }
132 | }
133 | }
134 | }
--------------------------------------------------------------------------------
/MentQ/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("MentQ")]
9 | [assembly: AssemblyDescription("Control library")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("uint32labs")]
12 | [assembly: AssemblyProduct("MentQ")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("9c4eab90-4f39-411d-85da-8b00e1291b6e")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/MentQ/Styles.cs:
--------------------------------------------------------------------------------
1 | namespace MentQ
2 | {
3 | public enum Styles
4 | {
5 | Outlined,
6 | Underlined,
7 | None
8 | }
9 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Winform Controls
2 | Basically some of my old winform themes/controls. Not all controls are perfectly designed nor are they bug free (although I tested them a bit and couldn't find any major issues).
3 |
4 | I have no interest in supporting this project so do not expect any additions, although I may fix bugs if there are any (if I feel like it).
5 |
6 | Also, sorry for the lack of comments.
7 |
8 | If you ever use this, please leave credits!
9 |
10 | Licensed under the Apache License 2.0.
11 |
12 | ### [Builds](builds)
13 |
14 | # MentQ
15 | ### Preview
16 | 
17 |
18 | ### Control list
19 | * __MentQButton:__ Functions like a regular button.
20 | * __MentQCheckbox:__ Implements only the basic functionality of a checkbox.
21 | * __MentQEllipticalProgress:__ Elliptical progress bar, doesn't implement full progressbar functionality.
22 | * __MentQGroupBox:__ Doesn't inherit from groupbox, rather from container control but if you don't need groupbox specific properties it shouldn't matter. You can put controls in the header and they won't dissapear when the groupbox is closed.
23 | * __MentQInfoBox:__ Awesome control, has tons of custom properties that explain themsleves so you shouldn't be too lost. Remember to use the alpha in your colors.
24 | * __MentQNotification:__ Literally a label in rounded box.
25 | * __MentQNumericUpDown:__ Use the InternalNumericUpDown property to access all of the base NumericUpDown properties. This control can sometimes look buggy design time although it should return to normal in runtime.
26 | * __MentQProgressBar:__ Regular value progressbar. Doesn't implement marquee/other modes.
27 | * __MentQRadioButton:__ Implements only the basic functionality of a radiobox.
28 | * __MentQTabControl:__ Vertical tabcontrol. Works with images/imagelists.
29 |
30 | # Dio
31 | ### Preview
32 | 
33 |
34 | ### Control list
35 | * __DioButton:__ Functions like a regular button.
36 | * __DioCheckbox:__ Implements only the basic functionality of a checkbox.
37 | * __DioGroupBox:__ Inherits from containercontrol, can change shadow.
38 | * __DioMarqueeProgressBar:__ Doesn't inherit from progressbar, just a start/stop marquee progress bar. Use `Start();` and `Stop();`.
39 | * __DioRadioButton:__ Implements only the basic functionality of a radiobox.
40 | * __DioTextBox:__ I don't recommend you use this control since it lacks the textbox functionality but looks almost similar to it. If you do use it, you can access all of the base textbox properties through the InternalTextBox property.
41 |
42 | # How to use
43 | __Note:__ Both of these methods work for c# and vb.net
44 |
45 | ### Cloning project (preferred way)
46 | 1. Download the controls project source for the controls you need (Dio and/or MentQ)
47 | 2. Add the project(s) to your solution.
48 | 3. On the project you want to use the controls: Add a reference to the controls project
49 | 4. The controls should now be available in your toolbox!
50 |
51 | ### Referencing a Dynamic Link Library (.dll)
52 | 1. Download the build.
53 | 2. Add it as a reference to your project.
54 | 3. In your toolbox, right click and select 'Add Tab'.
55 | 4. Once you've added the tab, right click on it and select 'Choose Items'.
56 | 5. Browse for the library.
57 | 6. Add all the controls.
58 | 7. They should now appear in your toolbox and be ready to use normally.
59 |
--------------------------------------------------------------------------------
/WinformThemes.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.27428.2037
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinformThemes", "WinformThemes\WinformThemes.csproj", "{58CA487F-8C48-4D14-927E-06AEB04088F9}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dio", "Dio\Dio.csproj", "{D8AFFCD4-5D23-49B0-930A-9D88D5937BDA}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MentQ", "MentQ\MentQ.csproj", "{9C4EAB90-4F39-411D-85DA-8B00E1291B6E}"
11 | EndProject
12 | Global
13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
14 | Debug|Any CPU = Debug|Any CPU
15 | Release|Any CPU = Release|Any CPU
16 | EndGlobalSection
17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
18 | {58CA487F-8C48-4D14-927E-06AEB04088F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
19 | {58CA487F-8C48-4D14-927E-06AEB04088F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
20 | {58CA487F-8C48-4D14-927E-06AEB04088F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
21 | {58CA487F-8C48-4D14-927E-06AEB04088F9}.Release|Any CPU.Build.0 = Release|Any CPU
22 | {D8AFFCD4-5D23-49B0-930A-9D88D5937BDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23 | {D8AFFCD4-5D23-49B0-930A-9D88D5937BDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
24 | {D8AFFCD4-5D23-49B0-930A-9D88D5937BDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
25 | {D8AFFCD4-5D23-49B0-930A-9D88D5937BDA}.Release|Any CPU.Build.0 = Release|Any CPU
26 | {9C4EAB90-4F39-411D-85DA-8B00E1291B6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27 | {9C4EAB90-4F39-411D-85DA-8B00E1291B6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
28 | {9C4EAB90-4F39-411D-85DA-8B00E1291B6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
29 | {9C4EAB90-4F39-411D-85DA-8B00E1291B6E}.Release|Any CPU.Build.0 = Release|Any CPU
30 | EndGlobalSection
31 | GlobalSection(SolutionProperties) = preSolution
32 | HideSolutionNode = FALSE
33 | EndGlobalSection
34 | GlobalSection(ExtensibilityGlobals) = postSolution
35 | SolutionGuid = {AEDCF814-5EB1-44AF-B02A-8675563649FB}
36 | EndGlobalSection
37 | EndGlobal
38 |
--------------------------------------------------------------------------------
/WinformThemes/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/WinformThemes/GlobalHelpers.cs:
--------------------------------------------------------------------------------
1 | #region
2 |
3 | using System;
4 | using System.Drawing;
5 | using System.Drawing.Drawing2D;
6 | using System.IO;
7 |
8 | #endregion
9 |
10 | namespace WinformThemes
11 | {
12 | internal static class GlobalHelpers
13 | {
14 | public static readonly string DownArrowBase64String =
15 | "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAh0lEQVQ4T93TMQrCUAzG8V9x8QziiYSuXdzFC7h4AcELOPQAdXYovZCHEATlgQV5GFTe1ozJlz/kS1IpjKqw3wQBVyy++JI0y1GTe7DCBbMAckeNIQKk/BanALBB+16LtnDELoMcsM/BESDlz2heDR3WePwKSLo5eoxz3z6NNcFD+vu3ij14Aqz/DxGbKB7CAAAAAElFTkSuQmCC";
16 |
17 |
18 | public static GraphicsPath GetRoundedRect(Rectangle baseRect,
19 | int radius)
20 | {
21 | int corner = radius * 2;
22 | GraphicsPath gp = new GraphicsPath();
23 | gp.AddArc(new Rectangle(baseRect.X, baseRect.Y, corner, corner), -180, 90);
24 | gp.AddArc(new Rectangle(baseRect.Width - corner + baseRect.X, baseRect.Y, corner, corner), -90, 90);
25 | gp.AddArc(
26 | new Rectangle(baseRect.Width - corner + baseRect.X, baseRect.Height - corner + baseRect.Y, corner,
27 | corner), 0, 90);
28 | gp.AddArc(new Rectangle(baseRect.X, baseRect.Height - corner + baseRect.Y, corner, corner), 90, 90);
29 | gp.CloseAllFigures();
30 | return gp;
31 | }
32 |
33 | public static GraphicsPath GetRoundedRect(RectangleF baseRect,
34 | float radius)
35 | {
36 | float corner = radius * 2;
37 | GraphicsPath GP = new GraphicsPath();
38 | GP.AddArc(new RectangleF(baseRect.X, baseRect.Y, corner, corner), -180, 90);
39 | GP.AddArc(new RectangleF(baseRect.Width - corner + baseRect.X, baseRect.Y, corner, corner), -90, 90);
40 | GP.AddArc(
41 | new RectangleF(baseRect.Width - corner + baseRect.X, baseRect.Height - corner + baseRect.Y, corner,
42 | corner), 0, 90);
43 | GP.AddArc(new RectangleF(baseRect.X, baseRect.Height - corner + baseRect.Y, corner, corner), 90, 90);
44 | GP.CloseAllFigures();
45 | return GP;
46 | }
47 |
48 | public static void DrawDownFade(Graphics g, Rectangle area, Color finalColor)
49 | {
50 | using (LinearGradientBrush brush = new LinearGradientBrush(area, Color.Transparent, finalColor, 270))
51 | {
52 | g.FillRectangle(brush, area);
53 | }
54 |
55 | /*
56 | int floorIncrements = finalColor.A / area.Height;
57 | for (int i = 0; i < area.Height; i++)
58 | {
59 | using (Pen pen = new Pen(Color.FromArgb(finalColor.A - (floorIncrements * (i + 1)), finalColor)))
60 | g.DrawLine(pen, area.X, area.Y + i, area.Width, area.Y + i);
61 | }
62 | */
63 | }
64 |
65 | ///
66 | /// Changes the overall transparency of an image
67 | ///
68 | /// The input image to be tuned
69 | /// the desired alpha value. It is based on the 255 alpha pixels
70 | /// To conserve the antialiasing on the image
71 | ///
72 | public static Image TuneTransparency(Image originalImage, int alpha, bool antialias)
73 | {
74 | //Cast & clone image to bitmap
75 | Bitmap bitmap = new Bitmap(originalImage);
76 | //Cycle through all pixels
77 | Color pixel;
78 |
79 | //ratio between a max byte and desired alpha byte, this achieves the conservation of antialiasing
80 | int ratio = 255 / alpha;
81 | for (int i = 0; i < originalImage.Width; i++)
82 | for (int j = 0; j < originalImage.Height; j++)
83 | {
84 | //Get pixel color
85 | pixel = bitmap.GetPixel(i, j);
86 |
87 | //If pixel is not already transparent
88 | if (pixel.A != 0)
89 | bitmap.SetPixel(i, j, Color.FromArgb(
90 | //If antialiasing is enabled use the pixel alpha/ratio else just use the set alpha
91 | antialias ? pixel.A / ratio : alpha,
92 | pixel));
93 | }
94 |
95 | return bitmap;
96 | }
97 |
98 | ///
99 | /// Lightens a color
100 | ///
101 | /// Original color
102 | /// The amount of bytes to lighten the color
103 | ///
104 | public static Color ChangeColor(Color originalColor, int difference)
105 | {
106 | return
107 | Color.FromArgb(originalColor.R + difference > 255 ? 255 : originalColor.R + difference,
108 | originalColor.G + difference > 255 ? 255 : originalColor.G + difference,
109 | originalColor.B + difference > 255 ? 255 : originalColor.B + difference);
110 | }
111 |
112 | ///
113 | /// Transforms a base64 string to an image
114 | ///
115 | /// Base64 image string
116 | ///
117 | public static Image Base64ToImage(string base64string)
118 | {
119 | MemoryStream stream = new MemoryStream(Convert.FromBase64String(base64string));
120 | return Image.FromStream(stream);
121 | }
122 | }
123 | }
--------------------------------------------------------------------------------
/WinformThemes/MainForm.cs:
--------------------------------------------------------------------------------
1 | #region
2 |
3 | using System.Windows.Forms;
4 |
5 | #endregion
6 |
7 | namespace WinformThemes
8 | {
9 | public partial class MainForm : Form
10 | {
11 | public MainForm()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/WinformThemes/MainForm.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
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 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
124 |
125 | AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
126 | LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
127 | ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABA
128 | BQAAAk1TRnQBSQFMAgEBAgEAAYgBAAGIAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
129 | AwABEAMAAQEBAAEgBgABEBoAA2EB5ANUAawDVAGsA1QBrANTAagIAANUAawDVAGsA1QBrANUAawDZQHl
130 | GwABAQMVAR0DKgFAAzIBUAMyAVADKQE/AxQBHAMAAQGYAANTAagMAANTAagIAANUAawMAANUAawQAAMT
131 | ARoDSwGOA1YBtgNPAZcDQAFxAzgBXQM4AV0DQAFxA04BmANWAbYDSgGMAxIBGJAAA1MBqAwAA1MBqAgA
132 | A1QBrAwAA1QBrAwAAyIBMQNVAbIDIAEuIAADIQEwA1YBsQMfAS2MAANTAagMAANTAagIAANUAawMAANU
133 | AawMAANSAaMDDAEQBwABAQMVAR0DKgFAAzIBUAMyAVADKQE/AxQBHAMAAQEEAAMNAREDUAGejAADUwGo
134 | DAADYQHiA1MBqANTAagDYQHkDAADVAGsDAADVAGsAxMBGgNLAY4DVgG2A08BlwNAAXEDOAFdAzgBXQNA
135 | AXEDTgGYA1YBtgNKAYwDEgEYA1MBqIwAA1MBqCgAA1QBrAwAA1gBvANVAbIDIAEuIAADIQEwA1YBsQNX
136 | AbeMAANTAagoAANSAaEMAANeAd0DDAEQBwABAQMVAR0DKgFAAzIBUAMyAVADKQE/AxQBHAMAAQEEAAMN
137 | AREDYQHahAADVQGyAxcEIAEuLAADGAEiA1UBsAQAA1QBrAMTARoDSwGOA1YBtgNPAZcDQAFxAzgBXQM4
138 | AV0DQAFxA04BmANWAbYDSgGMAxIBGANTAaiEAAMUARsDVwG6AxsBJigAAxwBKANXAboDEgEZBAADWAG8
139 | A1UBsgMgAS4gAAMhATADVgGxA1cBt4gAAxABFgNXAbgDHwEsIAADIAEuA1cBuAMQARUIAANeAd0DDAEQ
140 | AwEBAgMkATYDQAFvA0wBkgNRAaIDUgGkA0wBkwNAAXADJAE2AwEBAgMNAREDYQHajAADDQESA1YBtgMi
141 | ATIYAAMjATQDVgG0Aw0BEQwAA1QBrAM2AVkDVgG0A0UBfAMpAT8DEgEZAwQBBQMEAQUDEgEZAyoBQANF
142 | AX0DVQG1AzYBWANTAaiQAAMKAQ4DVQGyAycBOhAAAycBOwNWAbEDNwFbAzEBTQwAA1sBywNFAXwDAQEC
143 | IAADAQECA0YBfgNZAceUAAMHAQoDVQGtAyoBQQgAAysBQgNUAawDBwEKAzYBWAM0AVQMAANZAccDDwEU
144 | KAADDQESA1sBxJgAAwYBCANTAagDLwFJAy8BSgNSAacDPgFqA1MBqANZAccDNAFUDAADIwE0A1YBswMe
145 | ASsgAAMdASoDVAGvAyEBMJwAAwQBBQNSAaEDUgGhAwQBBSAAAxYBHgNMAZMDVwG3A0wBkgM/AWwDNgFZ
146 | AzYBWAM+AWsDTQGRA1YBtANMAZADFAEbpAADAgEDAwIBAy8AAQEDGAEiAy0BRQM1AVYDNQFWAy0BRQMY
147 | ASIDAAEBkAABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEAAQEFAAGAFwAD/wEAAcEBgwHwAQ8EAAHd
148 | AbsBwAEDBAAB3QG7AY8B8QQAAd0BuwGQAQkEAAHcATsBgAEBBAAB3wH7AY8B8QQAAd8B+wGQAQkEAAEf
149 | AfwBgAEBBAABHwH4AY8B8QQAAY8B8QGAAQEEAAHHAeMBgAEBBAAB4wHDAY8B8QQAAfEBgwGfAfkEAAH4
150 | AQMBjwHxBAAB/AE/AcABAwQAAf4BfwHwAQ8EAAs=
151 |
152 |
153 |
154 |
155 |
156 | iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
157 | EwAACxMBAJqcGAAAAjFJREFUOE+FU01o1EAYjX8IHgQRb3qW3hQPelA86MwELHqwa9VWqxQrWorXSiYz
158 | 0gq2IlQP1pvgUUEP1YMXKYKglRXUzWSyqXZl69+hFlu7K4I4vsmm3U2r9MEjyeS9N1++L+P8D7F01weS
159 | bFPc3f6298CGdHl5hJJQ5ZNRzUlFCxJozgpasDnwhfbp4VS2FEbKlVrQm4qTUiTcTiVIJ0xDoaA3Ao+d
160 | VZK028BQkLtxj7s2tdVhhdpnTwNJj8M4BZpGInAWFXRhkwfQ3kttNSif7cHOk+oSbVWC/Zk3jV89auLB
161 | 1kxQUdAz9rMizo6kdgQINhJ6pBslfm4UV8vKVCZeZwJg/qFrVeYT86jcu7rWMNqWEYLvr58274Y6MmuW
162 | kWDdqHgmvuhucgoe3YKAL6FgfqNo/FqbqXwomErpTcZsiUbewjUfSneXnfdmPHxFA3mjyHJ67KGpTurM
163 | mmXos2Fs+grj3umYXG4VFudQwbHFwumxkX8GKI+es1MJe/dtTPqgfXIfLy6A5XlR1NdsZsNn5te3Tya+
164 | 0lI3C/a9wOlJjPR5Yrawpdg+gC1I/m2Fxf6DpjR8PmE8kFsIwBROaU6Lkc8OpfYa0IMBNOclAnJK0I8L
165 | hjqn0P0TePcY93dSWx3GcVZglIPJv+DRHhyidpTZh4ZdRnBHgL8Q5U+EnN3Od+1Yk9qWIpLuboQ8wk5V
166 | 7FS2Z0Nx9hNBTyJJ3VS2POyBwfduLfL9TXnZvC5dXgTH+QvlaMqFsARl6AAAAABJRU5ErkJggg==
167 |
168 |
169 |
170 |
171 | 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
256 |
257 |
258 |
259 |
260 | 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
345 |
346 |
347 |
348 |
349 | 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
434 |
435 |
436 |
437 |
438 | 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
523 |
524 |
525 |
526 |
527 | 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
612 |
613 |
614 |
615 |
616 | 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
701 |
702 |
703 |
704 |
705 | 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
790 |
791 |
792 |
793 |
794 | iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
795 | dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFkSURBVDhPdZNJSgNREEDjAOKIegkheAIXulNEEDyA
796 | iFMWujGIETyRC8c43UD0VO17n6qmW+PipevX8Gv4lU5VVf9xDffwAJeh+0PzsACHsBjnu/jKbXyX4Ajm
797 | 4lxfYPALHMAbmP0T0q58Be+gzxDKJelwAhqUu7ANY3EW5R1YifMx7Cung2W/gsGpM4MXGTgfOlkFfa26
798 | NQNLNEB5Ayy3B6fwAeugbRf6IZcLbsCB2aelmtngKShOIXvJLIyDvg52oNGnSkexCjM3dXIGW790T/48
799 | wiRMhNKeLbvpKOewGbK+xgw9uCSWky04MMtttjAduhmwhW8wpp8O4hDNruzADLBsMyuvgbY9uAi5foVl
800 | cHD5zuLA7NmyzZx6n9plKxubSoeWi+Q7+1SWmnZlM+eeuEjFPx18OtdTgyttiV+QdntWZ2Z9nsEKW4vk
801 | Ja5n2TAY9WeybH1KsKTDKAZgJqk3r03V+QFTdzU4zm+CPgAAAABJRU5ErkJggg==
802 |
803 |
804 |
--------------------------------------------------------------------------------
/WinformThemes/Program.cs:
--------------------------------------------------------------------------------
1 | #region
2 |
3 | using System;
4 | using System.Windows.Forms;
5 |
6 | #endregion
7 |
8 | namespace WinformThemes
9 | {
10 | internal static class Program
11 | {
12 | ///
13 | /// The main entry point for the application.
14 | ///
15 | [STAThread]
16 | private static void Main()
17 | {
18 | Application.EnableVisualStyles();
19 | Application.SetCompatibleTextRenderingDefault(false);
20 | Application.Run(new MainForm());
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/WinformThemes/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | #region
2 |
3 | using System.Reflection;
4 | using System.Runtime.InteropServices;
5 |
6 | #endregion
7 |
8 | // General Information about an assembly is controlled through the following
9 | // set of attributes. Change these attribute values to modify the information
10 | // associated with an assembly.
11 | [assembly: AssemblyTitle("WinformThemes")]
12 | [assembly: AssemblyDescription("Control library demo")]
13 | [assembly: AssemblyConfiguration("uint32labs")]
14 | [assembly: AssemblyCompany("")]
15 | [assembly: AssemblyProduct("WinformThemes")]
16 | [assembly: AssemblyCopyright("Copyright © 2018")]
17 | [assembly: AssemblyTrademark("")]
18 | [assembly: AssemblyCulture("")]
19 |
20 | // Setting ComVisible to false makes the types in this assembly not visible
21 | // to COM components. If you need to access a type in this assembly from
22 | // COM, set the ComVisible attribute to true on that type.
23 | [assembly: ComVisible(false)]
24 |
25 | // The following GUID is for the ID of the typelib if this project is exposed to COM
26 | [assembly: Guid("58ca487f-8c48-4d14-927e-06aeb04088f9")]
27 |
28 | // Version information for an assembly consists of the following four values:
29 | //
30 | // Major Version
31 | // Minor Version
32 | // Build Number
33 | // Revision
34 | //
35 | // You can specify all the values or you can default the Build and Revision Numbers
36 | // by using the '*' as shown below:
37 | // [assembly: AssemblyVersion("1.0.*")]
38 | [assembly: AssemblyVersion("1.0.0.0")]
39 | [assembly: AssemblyFileVersion("1.0.0.0")]
--------------------------------------------------------------------------------
/WinformThemes/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace WinformThemes.Properties
12 | {
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources
26 | {
27 |
28 | private static global::System.Resources.ResourceManager resourceMan;
29 |
30 | private static global::System.Globalization.CultureInfo resourceCulture;
31 |
32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
33 | internal Resources()
34 | {
35 | }
36 |
37 | ///
38 | /// Returns the cached ResourceManager instance used by this class.
39 | ///
40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
41 | internal static global::System.Resources.ResourceManager ResourceManager
42 | {
43 | get
44 | {
45 | if ((resourceMan == null))
46 | {
47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WinformThemes.Properties.Resources", typeof(Resources).Assembly);
48 | resourceMan = temp;
49 | }
50 | return resourceMan;
51 | }
52 | }
53 |
54 | ///
55 | /// Overrides the current thread's CurrentUICulture property for all
56 | /// resource lookups using this strongly typed resource class.
57 | ///
58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
59 | internal static global::System.Globalization.CultureInfo Culture
60 | {
61 | get
62 | {
63 | return resourceCulture;
64 | }
65 | set
66 | {
67 | resourceCulture = value;
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/WinformThemes/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
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 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/WinformThemes/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace WinformThemes.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/WinformThemes/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/WinformThemes/WinformThemes.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {58CA487F-8C48-4D14-927E-06AEB04088F9}
8 | WinExe
9 | WinformThemes
10 | WinformThemes
11 | v4.6.1
12 | 512
13 | true
14 | publish\
15 | true
16 | Disk
17 | false
18 | Foreground
19 | 7
20 | Days
21 | false
22 | false
23 | true
24 | 0
25 | 1.0.0.%2a
26 | false
27 | false
28 | true
29 |
30 |
31 | AnyCPU
32 | true
33 | full
34 | false
35 | bin\Debug\
36 | DEBUG;TRACE
37 | prompt
38 | 4
39 |
40 |
41 | AnyCPU
42 | pdbonly
43 | true
44 | bin\Release\
45 | TRACE
46 | prompt
47 | 4
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | Form
66 |
67 |
68 | MainForm.cs
69 |
70 |
71 |
72 |
73 | MainForm.cs
74 |
75 |
76 | ResXFileCodeGenerator
77 | Resources.Designer.cs
78 | Designer
79 |
80 |
81 | True
82 | Resources.resx
83 |
84 |
85 | SettingsSingleFileGenerator
86 | Settings.Designer.cs
87 |
88 |
89 | True
90 | Settings.settings
91 | True
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 | {d8affcd4-5d23-49b0-930a-9d88d5937bda}
100 | Dio
101 |
102 |
103 | {9c4eab90-4f39-411d-85da-8b00e1291b6e}
104 | MentQ
105 |
106 |
107 |
108 |
109 | False
110 | Microsoft .NET Framework 4.6.1 %28x86 and x64%29
111 | true
112 |
113 |
114 | False
115 | .NET Framework 3.5 SP1
116 | false
117 |
118 |
119 |
120 |
--------------------------------------------------------------------------------
/builds/Dio.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uint32labs/Winform-controls/78f522dfec938739ab79ba396a6ffb6abc89328b/builds/Dio.dll
--------------------------------------------------------------------------------
/builds/MentQ.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uint32labs/Winform-controls/78f522dfec938739ab79ba396a6ffb6abc89328b/builds/MentQ.dll
--------------------------------------------------------------------------------
/preview-dio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uint32labs/Winform-controls/78f522dfec938739ab79ba396a6ffb6abc89328b/preview-dio.png
--------------------------------------------------------------------------------
/preview-mentq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uint32labs/Winform-controls/78f522dfec938739ab79ba396a6ffb6abc89328b/preview-mentq.png
--------------------------------------------------------------------------------