123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Windows.Forms;
- using System.IO;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- using System.ComponentModel;
- using System.Runtime.InteropServices;
- namespace LYFZ.ComponentLibrary
- {
- public class PanelEx : System.Windows.Forms.Panel
- {
- [DllImport("user32.dll")]
- private static extern IntPtr GetWindowDC(IntPtr hwnd);
- [DllImport("user32.dll")]
- private static extern int ReleaseDC(IntPtr hwnd, IntPtr hdc);
- private Color _borderColor = LYFZ.ComponentLibrary.GetUIResources.BorderAreaColor;
- private int _borderWidth = 1;
- //
- // 摘要:
- // 获取或设置控件的边框颜色。
- //
- // 返回结果:
- // 控件的边框颜色 System.Drawing.Color。默认为 System.Drawing.Color.Black
- // 属性的值。
- [Description("组件的边框颜色。"), Category("Appearance")]
- public Color BorderColor
- {
- get
- {
- return _borderColor;
- }
- set
- {
- _borderColor = value;
- this.Invalidate();
- }
- }
- //
- // 摘要:
- // 获取或设置控件的边框宽度。
- //
- // 返回结果:
- // 控件的边框宽度 int。默认为 1
- // 属性的值。
- [Description("组件的边框宽度。"), Category("Appearance")]
- public int BorderWidth
- {
- get
- {
- return _borderWidth;
- }
- set
- {
- _borderWidth = value;
- this.Invalidate();
- }
- }
- public PanelEx()
- {
- SetStyle(ControlStyles.DoubleBuffer, true);
- SetStyle(ControlStyles.AllPaintingInWmPaint, false);
- SetStyle(ControlStyles.ResizeRedraw, true);
- SetStyle(ControlStyles.UserPaint, true);
- SetStyle(ControlStyles.SupportsTransparentBackColor, true);
- this.Paint += new PaintEventHandler(PanelEx_Paint);
- this.DoubleBuffered = true;
- }
- private PlBorderType _BorderType = PlBorderType.all;
- public PlBorderType BorderType
- {
- get { return _BorderType; }
- set { _BorderType = value; }
- }
- private void PanelEx_Paint(object sender, PaintEventArgs e)
- {
- if (this.BorderStyle == BorderStyle.FixedSingle)
- {
- IntPtr hDC = GetWindowDC(this.Handle);
- Graphics g = Graphics.FromHdc(hDC);
- switch (this.BorderType)
- {
- case PlBorderType.all:
- ControlPaint.DrawBorder(
- g,
- new Rectangle(0, 0, this.Width, this.Height),
- _borderColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- _borderColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- _borderColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- _borderColor,
- _borderWidth,
- ButtonBorderStyle.Solid);
- break;
- case PlBorderType.top:
- ControlPaint.DrawBorder(
- g,
- new Rectangle(0, 0, this.Width, this.Height),
- BackColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- _borderColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- BackColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- BackColor,
- _borderWidth,
- ButtonBorderStyle.Solid);
- break;
- case PlBorderType.bottom:
- ControlPaint.DrawBorder(
- g,
- new Rectangle(0, 0, this.Width, this.Height),
- BackColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- BackColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- BackColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- _borderColor,
- _borderWidth,
- ButtonBorderStyle.Solid);
- break;
- case PlBorderType.left:
- ControlPaint.DrawBorder(
- g,
- new Rectangle(0, 0, this.Width, this.Height),
- _borderColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- BackColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- BackColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- BackColor,
- _borderWidth,
- ButtonBorderStyle.Solid);
- break;
- case PlBorderType.right:
- ControlPaint.DrawBorder(
- g,
- new Rectangle(0, 0, this.Width, this.Height),
- BackColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- BackColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- _borderColor,
- _borderWidth,
- ButtonBorderStyle.Solid,
- BackColor,
- _borderWidth,
- ButtonBorderStyle.Solid);
- break;
- }
- g.Dispose();
- ReleaseDC(Handle, hDC);
- }
- }
-
- }
- public enum PlBorderType
- {
- all,
- top,
- bottom,
- left,
- right
- }
- }
|