在C#中使用圆形边框的表单?

我使用此代码使表单没有边框样式:

this.FormBorderStyle = FormBorderStyle.None; 

我需要在表单上制作圆角。

有一个简单的方法吗? 我该怎么做?

看看这个: http : //msdn.microsoft.com/en-us/library/system.windows.forms.control.region.aspx

Form类inheritance自Control类,因此请尝试在Form的Region属性的链接上执行相同的示例(当然,在表单事件上执行此操作):

  // This method will change the square button to a circular button by // creating a new circle-shaped GraphicsPath object and setting it // to the RoundButton objects region. private void roundButton_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { System.Drawing.Drawing2D.GraphicsPath buttonPath = new System.Drawing.Drawing2D.GraphicsPath(); // Set a new rectangle to the same size as the button's // ClientRectangle property. System.Drawing.Rectangle newRectangle = roundButton.ClientRectangle; // Decrease the size of the rectangle. newRectangle.Inflate(-10, -10); // Draw the button's border. e.Graphics.DrawEllipse(System.Drawing.Pens.Black, newRectangle); // Increase the size of the rectangle to include the border. newRectangle.Inflate( 1, 1); // Create a circle within the new rectangle. buttonPath.AddEllipse(newRectangle); // Set the button's Region property to the newly created // circle region. roundButton.Region = new System.Drawing.Region(buttonPath); } 

我知道问题已经回答了,我想添加一个替代和愚蠢的但是不是真正推荐的做法,因为你的问题不会将答案限制为代码……

  • 使用背景颜色作为填充创建一个空白的方形图像,然后将左上角的圆角擦除为透明,对所有角重复此操作
  • 将非常不可能的颜色设置为表单背景颜色
  • 将此颜色设置为表单上的TransparencyKey
  • 将图像添加为PictureBox并将它们放到相应的角落

中提琴!

  public static void RoundBorderForm(Form frm) { Rectangle Bounds = new Rectangle(0, 0, frm.Width, frm.Height); int CornerRadius = 20; System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath(); path.AddArc(Bounds.X, Bounds.Y, CornerRadius, CornerRadius, 180, 90); path.AddArc(Bounds.X + Bounds.Width - CornerRadius, Bounds.Y, CornerRadius, CornerRadius, 270, 90); path.AddArc(Bounds.X + Bounds.Width - CornerRadius, Bounds.Y + Bounds.Height - CornerRadius, CornerRadius, CornerRadius, 0, 90); path.AddArc(Bounds.X, Bounds.Y + Bounds.Height - CornerRadius, CornerRadius, CornerRadius, 90, 90); path.CloseAllFigures(); frm.Region = new Region(path); frm.Show(); }