c# 圆角界面

Posted on 2010-12-23 12:38  严武  阅读(534)  评论(0编辑  收藏  举报

#region 圆角界面

        public void SetWindowRegion()
        {
            System.Drawing.Drawing2D.GraphicsPath FormPath;

            FormPath = new System.Drawing.Drawing2D.GraphicsPath();

            Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);//this.Left-10,this.Top-10,this.Width-10,this.Height-10);

            FormPath = GetRoundedRectPath(rect, 18);

            this.Region = new Region(FormPath);
        }

        private GraphicsPath GetRoundedRectPath(Rectangle rect, int radius)
        {

            int diameter = radius;

            Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter));

            GraphicsPath path = new GraphicsPath();

            // 左上角

            path.AddArc(arcRect, 180, 90);

            // 右上角

            arcRect.X = rect.Right - diameter;

            path.AddArc(arcRect, 270, 90);

            // 右下角

            arcRect.Y = rect.Bottom - diameter;

            path.AddArc(arcRect, 0, 90);

            // 左下角

            arcRect.X = rect.Left;

            path.AddArc(arcRect, 90, 90);

            path.CloseFigure();

            return path;


        }

        private void FingerPrintMainForm_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Normal)
            {
                SetWindowRegion();
            }
            else
            {
                this.Region = null;
            }

        }

        #endregion

Copyright © 2024 严武
Powered by .NET 9.0 on Kubernetes