与圆角边框形式C#? [重复](Form with Rounded Borders in C#?

2019-07-29 11:09发布

这个问题已经在这里有一个答案:

  • 如何绘制一个圆角矩形的WinForms(.NET)? 5个回答

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

this.FormBorderStyle = FormBorderStyle.None;

我需要在表格上圆边。

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

Answer 1:

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

Form类从Control类继承,所以尝试这样做,你有链接到窗体的区域属性上(和做它当然的形式事件),同一样品:

    // 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);

}


Answer 2:

我知道这个问题已经回答了,我想补充一个替代的和愚蠢的但并不推荐做法,因为你的问题不限制答案应运而生代码...

  • 创建你的背景颜色填充空白,正方形的图像,然后删除左上圆角是透明的,重复这各个角落
  • 设置一个不太可能的颜色作为窗体背景颜色
  • 设置这个颜色作为TransparencyKey表单上
  • 添加图像作为PictureBox ,并把它们对应的角落

中提琴!



Answer 3:

    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();
    }


文章来源: Form with Rounded Borders in C#? [duplicate]