A Professional Looking Label
Some Picks:
Without Glossy Effect
With Glossy Effect
Coding
This on Inherits Label So
Properties
Now Override the OnPaint Method
For Complete Source code email me at : sandeepparekh9@gmail.com
Some Picks:
Without Glossy Effect
With Glossy Effect
Coding
This on Inherits Label So
public partial class ProfLabel : Label
Properties
public string _Text;
private Color _SecondBackColor = Color.Silver;
public Color SecondBackColor
{
get { return _SecondBackColor; }
set { _SecondBackColor = value; Invalidate(); }
}
private bool _IsGlossyeffect = false;
public bool GlossyEffect
{
get { return _IsGlossyeffect; }
set { _IsGlossyeffect = value; Invalidate(); }
}
private int _BottomLineWidth = 3;
public int BottomLineWidth
{
get { return _BottomLineWidth; }
set { _BottomLineWidth = value; Invalidate(); }
}
Now Override the OnPaint Method
protected override void OnPaint(PaintEventArgs pe)
{
pe.Graphics.FillRectangle(new SolidBrush(Color.Transparent), this.ClientRectangle);
_Text = this.Text;
this.AutoSize = false;
SizeF size = pe.Graphics.MeasureString(_Text, this.Font);
Rectangle r = new Rectangle();
r.Size = new Size(int.Parse((Math.Round(size.Width)+2).ToString()),int.Parse(( Math.Round(size.Height)+2).ToString()));
r.Location = new Point(5, 5);
SolidBrush b = new SolidBrush(_SecondBackColor);
pe.Graphics.FillPath(b, GetRoundPath(r, 3));
if (_IsGlossyeffect)
{
Rectangle upperrect = new Rectangle();
upperrect.Location = new Point(5, 5);
upperrect.Width = r.Width;
upperrect.Height = r.Height / 2;
GraphicsPath upPath = GetRoundPath(upperrect, 3);
using (Brush brushUpper = new LinearGradientBrush(upperrect, Color.White, _SecondBackColor, LinearGradientMode.Vertical))
{
pe.Graphics.FillPath(brushUpper, upPath);
}
}
Point pDrawStrPoint = new Point();
pDrawStrPoint.X = 5;
pDrawStrPoint.Y = 5;
pe.Graphics.DrawString(_Text, this.Font, new SolidBrush(this.ForeColor), pDrawStrPoint);
//Drawing Fine Line
Point startPoint = new Point();
startPoint.X = r.Left;
startPoint.Y = r.Bottom;
Point endpoint = new Point();
endpoint.X = this.Width;
endpoint.Y = r.Bottom;
pe.Graphics.DrawLine(new Pen(_SecondBackColor, _BottomLineWidth), startPoint, endpoint);
}
Other Helping Functions public static GraphicsPath GetRoundPath(Rectangle r, int depth)
{
GraphicsPath graphPath = new GraphicsPath();
graphPath.AddArc(r.X, r.Y, depth, depth, 180, 90);
graphPath.AddArc(r.X + r.Width - depth, r.Y, depth, depth, 270, 90);
graphPath.AddArc(r.X + r.Width - depth, r.Y + r.Height - depth, depth, depth, 0, 90);
graphPath.AddArc(r.X, r.Y + r.Height - depth, depth, depth, 90, 90);
graphPath.AddLine(r.X, r.Y + r.Height - depth, r.X, r.Y + depth / 2);
return graphPath;
}
For Complete Source code email me at : sandeepparekh9@gmail.com
0 comments:
Post a Comment