zoukankan      html  css  js  c++  java
  • 画多边形form并填充背景色(可以实现圆角边框 有锯齿)

     public Form1()
            {
                InitializeComponent();
    
                this.BackColor = ColorTranslator.FromHtml("#F7F1F1");
                this.TransparencyKey = ColorTranslator.FromHtml("#F7F1F1");
                this.label1.Text = "ccccccccccccccccccccccccccccc";
                this.label1.BackColor = Color.White;
                this.Opacity = 1;
            }
    
            protected override void OnPaint(PaintEventArgs e)
            {
                base.OnPaint(e);
                //ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, Color.Orange, ButtonBorderStyle.Solid);
                //Draw(e.ClipRectangle, e.Graphics, 80);
                //Bitmap bitmap = new Bitmap(384, 305);
                //for (int i = 0; i < bitmap.Height; i++)
                //{
                //    bitmap.SetPixel(i, i, Color.Black);
                //}
                //bitmap.SetPixel(2, 2, Color.Black);
                //e.Graphics.DrawImage(bitmap, new Point(0, 0));
                //bitmap.Save(@"d:c.png");
                SolidBrush solidBrush = new SolidBrush(Color.White);
                var gpath = DrawRoundRect(e.ClipRectangle.X, e.ClipRectangle.Y, e.ClipRectangle.Width, e.ClipRectangle.Height, 50);
                e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
                e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
                e.Graphics.FillPath(solidBrush, gpath);
                e.Graphics.DrawPath(Pens.White, gpath);
            }
    
            /// <summary>
            /// 设置窗体的Region
            /// </summary>
            public void SetWindowRegion()
            {
                GraphicsPath FormPath;
                Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);
                FormPath = GetRoundedRectPath(rect, 80);
                this.Region = new Region(FormPath);
    
            }
            /// <summary>
            /// 绘制圆角路径
            /// </summary>
            /// <param name="rect"></param>
            /// <param name="radius"></param>
            /// <returns></returns>
            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;
            }
    
            /// <summary>
            /// 窗体size发生改变时重新设置Region属性
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void Form1_Resize(object sender, EventArgs e)
            {
                //SetWindowRegion();
            }
    
            //重绘边框
            private void Draw(Rectangle rectangle, Graphics g, int radius)
            {
                SolidBrush solidBrush = new SolidBrush(Color.White);
                Pen shadowPen = new Pen(solidBrush, 1);
                g.SmoothingMode = SmoothingMode.HighQuality;
    
                g.CompositingQuality = CompositingQuality.HighQuality;
                g.DrawPath(shadowPen, DrawRoundRect(rectangle.X, rectangle.Y, rectangle.Width - 2, rectangle.Height - 1, radius));
            }
            public static GraphicsPath DrawRoundRect(int x, int y, int width, int height, int radius)
            {
                GraphicsPath gp = new GraphicsPath();
                //gp.AddArc(x, y, radius, radius, 180, 90);
                //gp.AddArc(width - radius, y, radius, radius, 270, 90);
                //gp.AddArc(width - radius, height - radius, radius, radius, 0, 90);
                //gp.AddArc(x, height - radius, radius, radius, 90, 90);
                //gp.CloseAllFigures();
                gp.AddArc(x, y, radius, radius, 180, 90);
                gp.AddArc(width - 200, y, radius, radius, 270, 90);
                gp.AddArc(width - radius, height - radius, radius, radius, 0, 90);
                gp.AddArc(x, height - radius, radius, radius, 90, 90);
                gp.CloseAllFigures();
                return gp;
            }
  • 相关阅读:
    2017.12.13T19_B2_6.4内部类
    2017.12.13T19_B2_6.3内部类
    python--spider模拟登录
    Redis数据库
    python--spider验证码
    python--Selenium(动态渲染页面爬取)
    python--Ajax
    python绘图实例
    python绘图
    Numpy库收尾(20190806)
  • 原文地址:https://www.cnblogs.com/tony-brook/p/10311420.html
Copyright © 2011-2022 走看看