//边框线的宽度
const int LineWidth = 1;
//边框线的颜色
Color RGB = Color.FromArgb(126, 127, 133);
ControlPaint.DrawBorder(e.Graphics,
this.icPanel.ClientRectangle,
RGB,
//left
LineWidth,
ButtonBorderStyle.Solid,
RGB,
//top
LineWidth,
ButtonBorderStyle.Solid,
RGB,
//right
LineWidth,
ButtonBorderStyle.Solid,
RGB,
//bottom
LineWidth,
ButtonBorderStyle.Solid);
核心方法如上
在自定义控件 panel 中加入这个方法 和属性
(1)枚举值用来表示哪几条需要被画
public enum BorderLineStyle
{ None=0,
Left = 1,
Top = 2,
Right = 4,
Bottom = 8,
All = ~0
}
(2)加入到panel 的属性中 使得panel 可以 直接在属性栏中添加
private BorderLineStyle _outline = 0;
[Category("易迅")]
[Description("获得或设置一个值,指示加边框线的位置")]
public BorderLineStyle Outline
{
get { return _outline; }
set
{
_outline = value;
}
}
(3)加入panel 的方法
private readonly int lineWidth = 1;
private readonly Color RGB = Color.FromArgb(126, 127, 133);
/// <summary>
/// 画边框线
/// </summary>
/// <param name="e"></param>
private void PaintOutline(PaintEventArgs e)
{
ControlPaint.DrawBorder(e.Graphics,
this.ClientRectangle,
RGB,
//left
(_outline & BorderLineStyle.Left) == BorderLineStyle.Left ? lineWidth : 0,
ButtonBorderStyle.Solid,
RGB,
//top
(_outline & BorderLineStyle.Top) == BorderLineStyle.Top ? lineWidth : 0,
ButtonBorderStyle.Solid,
RGB,
//right
(_outline & BorderLineStyle.Right) == BorderLineStyle.Right ? lineWidth : 0,
ButtonBorderStyle.Solid,
RGB,
//bottom
(_outline & BorderLineStyle.Bottom) == BorderLineStyle.Bottom ? lineWidth : 0,
ButtonBorderStyle.Solid);
}
(4)
在panel 类中
加入
protected override void OnPaint(PaintEventArgs e)
{
PaintOutline(e);
base.OnPaint(e);
}
让panel 在加载时 使用这个方法