• 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也可以根据自己的需要调整到最佳效
  • 相关阅读:
    CSS Modules
    回调地狱
    css实现双色饼图
    vue项目中使用less
    pug(jade) 学习笔记
    React组件proptypes, ref
    react+express实现跨域
    react高阶组件
    Oracle数据库出现锁表情况分析
    JPA常用注解记录
  • 原文地址:https://www.cnblogs.com/sode/p/2560621.html
Copyright © 2020-2023  润新知