【问题标题】:Form with Rounded Borders in C#? [duplicate]C#中带有圆角边框的表格? [复制]
【发布时间】:2016-09-08 02:18:46
【问题描述】:

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

this.FormBorderStyle = FormBorderStyle.None;

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

有没有简单的方法?我该怎么做?

【问题讨论】:

  • 这个问题的答案可能会有所帮助:stackoverflow.com/questions/5092216/…
  • 看起来不错,但是嗯……我是新人,所以……我不知道把这些东西放在哪里。我知道将代码放在 form() 东西下的位置,但另一个很难。你能帮帮我吗?

标签: c# visual-c#-express-2010 formborderstyle


【解决方案1】:

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

Form 类继承自 Control 类,因此请尝试执行与 Form 的 Region 属性链接上的示例相同的示例(当然是在 form 事件上执行):

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

}

【讨论】:

    【解决方案2】:
        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();
        }
    

    【讨论】:

    • 请提供上下文说明为什么这可以解决 OP 的问题;代码永远不能代替文字!另外,感谢您对Stack Overflow 的贡献。
    【解决方案3】:

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

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

    中提琴!

    【讨论】:

      猜你喜欢
      • 2016-02-20
      • 2020-12-02
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 2014-09-27
      • 1970-01-01
      相关资源
      最近更新 更多