窗体的四个边角变成圆的,前几天还看到过这个帖子了,大家帮忙找下,有代码的把代码贴出来,lz急,马上结贴

解决方案 »

  1.   

    创建一个和窗口大小一样的圆角矩形,取得区域然后赋给Form。Region对象
      

  2.   

    http://blog.csdn.net/wei1279/archive/2007/01/04/1473438.aspx
      

  3.   

    http://blog.sina.com.cn/s/blog_5f998b5d0100mwxr.html
      

  4.   

    WinForm支持透明色,比如你更改:
    this.TransparencyKey = System.Drawing.Color.Black;//设置黑的是透明色
    this.BackColor = System.Drawing.Color.Black;//把窗口的背景色设置为黑色
    这样窗体就透明了,也点不到。你可以贴一张背景图,呵呵,就是椭圆的就可以了。
      

  5.   

    感谢你们的帮助,结贴:
    N多种方法,贴出来了:
    public   void   SetWindowRegion()     
      {     
      System.Drawing.Drawing2D.GraphicsPath   FormPath;     
      FormPath   =   new   System.Drawing.Drawing2D.GraphicsPath();     
      Rectangle   rect=new   Rectangle(0,22,this.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,   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;   
      }   
      protected   override   void   OnResize(System.EventArgs   e)     
      {     
      this.Region   =   null;     
      SetWindowRegion();     
      }----------------------------------------------------------------------增加命名空间: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也可以根据自己的需要调整到最佳效果.