zoukankan      html  css  js  c++  java
  • c # 窗体圆角

    引用:http://www.cnblogs.com/UouHt/archive/2009/02/23/1396544.html

    public void SetWindowRegion()
    {
        System.Drawing.Drawing2D.GraphicsPath FormPath;
        FormPath 
    = new System.Drawing.Drawing2D.GraphicsPath();
        Rectangle rect 
    = new Rectangle(022this.Width, this.Height - 22);//this.Left-10,this.Top-10,this.Width-10,this.Height-10);                 
        FormPath = GetRoundedRectPath(rect, 30);
        
    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, 18090);
        
    //   右上角   
        arcRect.X = rect.Right - diameter;
        path.AddArc(arcRect, 
    27090);
        
    //   右下角   
        arcRect.Y = rect.Bottom - diameter;
        path.AddArc(arcRect, 
    090);
        
    //   左下角   
        arcRect.X = rect.Left;
        path.AddArc(arcRect, 
    9090);
        path.CloseFigure();
        
    return path;
    }
    protected override void OnResize(System.EventArgs e)
    {
        
    this.Region = null;
        SetWindowRegion();
    }
    复制代码


    教你一招:构造圆角窗体  
    http://topic.csdn.net/t/20041128/19/3596094.html  

    增加命名空间:using System.Drawing.Drawing2D;  
    添加方法如下:当然各角的点可根据需要确定. 

    复制  保存
    复制代码
    private void Type(Control sender, int p_1, double p_2)
    {
        GraphicsPath oPath 
    = new GraphicsPath();
        oPath.AddClosedCurve(
            
    new Point[] {
                
    new Point(0, sender.Height / p_1),
                
    new Point(sender.Width / p_1, 0), 
                
    new Point(sender.Width - sender.Width / p_1, 0), 
                
    new Point(sender.Width, sender.Height / p_1),
                
    new Point(sender.Width, sender.Height - sender.Height / p_1), 
                
    new Point(sender.Width - sender.Width / p_1, sender.Height), 
                
    new Point(sender.Width / p_1, sender.Height),
                
    new Point(0, sender.Height - sender.Height / p_1) },

            (
    float) p_2);

        sender.Region 
    = new Region(oPath);
    }
    复制代码

    在窗体的paint和resize事件中增加:Type(this,20,0.1);  
    参数20和0.1也可以根据自己的需要调整到最佳效
  • 相关阅读:
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
    Java中时间与时间戳的转换
    python爬取网页数据
    selenium爬取网页内容知识点总结(代码均亲测可用)
    【LeetCode 5】 最长回文子串
    【LeetCode 4】寻找两个有序数组的中位数
    【LeetCode 3】无重复字符的最长子串
    【LeetCode 1】两数之和
    【LeetCode 2】两数相加
    【3-4】数字三角形问题
  • 原文地址:https://www.cnblogs.com/sode/p/2560621.html
Copyright © 2011-2022 走看看