Code for a custom label control. This creates a control that inherits from the standard System.Windows.Forms.Label control, and adds the facility to make the background a colour gradient fill.
1: using System;
2: using System.Drawing;
3: using System.Drawing.Drawing2D;
4: using System.Windows.Forms;
5:
6: namespace MyNamespace
7: {
8: public class CustomLabel : Label
9: {
10: # region Fields
11:
12: private Color _col1;
13: private Color _col2;
14: private Color _col3;
15: private Color _col4;
16: private LinearGradientMode _grad;
17:
18: # endregion
19:
20: # region Properties
21:
22: public Color Colour1
23: {
24: get { return this._col1; }
25: set
26: {
27: this._col1 = value;
28: this.Invalidate();
29: }
30: }
31:
32: public Color Colour2
33: {
34: get { return this._col2; }
35: set
36: {
37: this._col2 = value;
38: this.Invalidate();
39: }
40: }
41:
42: public LinearGradientMode Gradient
43: {
44: get { return this._grad; }
45: set
46: {
47: this._grad = value;
48: this.Invalidate();
49: }
50: }
51:
52: protected override Size DefaultSize
53: {
54: get { return new Size(64, 16); }
55: }
56:
57: # endregion
58:
59: # region Constructors
60:
61: public CustomLabel()
62: : base()
63: {
64: this._col1 = Color.White;
65: this._col2 = Color.Blue;
66: this._col3 = _col1;
67: this._col4 = _col2;
68: this._grad = LinearGradientMode.Vertical;
69: this.DoubleBuffered = true;
70: }
71:
72: public CustomLabel(Color c1, Color c2, LinearGradientMode grad)
73: : base()
74: {
75: this._col1 = c1;
76: this._col2 = c2;
77: this._col3 = _col1;
78: this._col4 = _col2;
79: this._grad = grad;
80: this.DoubleBuffered = true;
81: }
82:
83: # endregion
84:
85: # region Overrides
86:
87: protected override void OnPaintBackground(PaintEventArgs pevent)
88: {
89: //base.OnPaintBackground(pevent);
90:
91: LinearGradientBrush lgb = new LinearGradientBrush
92: (this.ClientRectangle, this._col1, this._col2, this._grad);
93: pevent.Graphics.FillRectangle(lgb, this.ClientRectangle);
94: lgb.Dispose();
95: }
96:
97: protected override void OnEnabledChanged(EventArgs e)
98: {
99: base.OnEnabledChanged(e);
100:
101: if (this.Enabled)
102: {
103: this._col1 = this._col3;
104: this._col2 = this._col4;
105: }
106: else
107: {
108: this._col1 = Color.LightGray;
109: this._col2 = Color.White;
110: }
111:
112: this.Invalidate();
113: }
114:
115: # endregion
116: }
117: }
When this code is created, the CustomLabel control will be available to add to forms from the control toolbox. Simply add it as per any other forms control.
Notes:
Colour1 & Colour2 properties: These are the properties that specify which colours to use for the gradient fill.
Gradient: This property specifies the type of gradient to use.
Constructors: The default constructor makes the gradient coloured from white to blue, whereas the parameterized constructor colours the label with the user specified colours.
OnPaintBackground: This method is the override for the method called when the background paint event is fired. Note that the call to the base method is inhibited, (i.e. commented out!) because it is not necessary as a new background is being painted.
OnEnabledChanged: When the .Enabled property of the control is changed, an event is fired which executes this method. Notice this time that the base method is called. The colour of the control is changed to light grey through white gradient when the control is disabled to give the appearance of being 'greyed out'.
0 comments:
Post a Comment