首页 > 代码库 > winfrom 圆角panel

winfrom 圆角panel

首先后台添加命名空间

using System.Drawing.Drawing2D;

后台代码

namespace Report.Web{    public partial class RoundPanel : Panel    {        private int mMatrixRound = 8;//圆角大小默认值        private Color mBack;        //重新定义背景颜色        public Color Back        {            get { return mBack; }            set            {                if (value =http://www.mamicode.com/= null)                {                    mBack = Control.DefaultBackColor;                }                else                {                    mBack = value;                }                base.Refresh();            }        }        /// <summary>圆角弧度(0为不要圆角)</summary>                  [Browsable(true)]          //显示到属性栏         [Description("圆角弧度(0为不要圆角)")]//属性栏 显示的注释        public int MatrixRound        {            get { return mMatrixRound; }            set            {                mMatrixRound = value;                base.Refresh();            }        }        private GraphicsPath CreateRound(Rectangle rect, int radius)        {            GraphicsPath roundRect = new GraphicsPath();            //顶端             roundRect.AddLine(rect.Left + radius - 1, rect.Top - 1, rect.Right - radius, rect.Top - 1);            //右上角             roundRect.AddArc(rect.Right - radius, rect.Top - 1, radius, radius, 270, 90);            //右边             roundRect.AddLine(rect.Right, rect.Top + radius, rect.Right, rect.Bottom - radius);            //右下角            roundRect.AddArc(rect.Right - radius, rect.Bottom - radius, radius, radius, 0, 90);            //底边             roundRect.AddLine(rect.Right - radius, rect.Bottom, rect.Left + radius, rect.Bottom);            //左下角             roundRect.AddArc(rect.Left - 1, rect.Bottom - radius, radius, radius, 90, 90);            //左边             roundRect.AddLine(rect.Left - 1, rect.Top + radius, rect.Left - 1, rect.Bottom - radius);            //左上角             roundRect.AddArc(rect.Left - 1, rect.Top - 1, radius, radius, 180, 90);            return roundRect;        }         protected override void OnPaint(PaintEventArgs pe)        {            int width = base.Width - base.Margin.Left - base.Margin.Right;            int height = base.Height - base.Margin.Top - base.Margin.Bottom;            Rectangle rec = new Rectangle(base.Margin.Left, base.Margin.Top, width, height);            GraphicsPath round = CreateRound(rec, mMatrixRound);            pe.Graphics.SmoothingMode = SmoothingMode.AntiAlias;            pe.Graphics.FillPath((Brush)(new SolidBrush(mBack)), round);         }        protected override void OnResize(EventArgs eventargs)        {            base.Refresh();        }     }}

 

注:以上信息我也是通过查资料然后总结的。