Form with Rounded Borders in C#? [duplicate]

僤鯓⒐⒋嵵緔 提交于 2019-12-31 17:22:11

问题


I am using this code to make the form have no border style:

this.FormBorderStyle = FormBorderStyle.None;

I need to make rounded edges on the form.

Is there an easy way? How do I do it?


回答1:


Take a look at this: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.region.aspx

The Form class inherits from the Control class, so try doing the same sample that you have on the link to the Form's Region property (and do it on the form event of course):

    // 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:


I know the question was already answered, I would like to add an alternative and silly BUT a not really recommended practice since your question does not restrict the answer into being codes...

  • Create a blank, square image with your background color as fill, then erase the top-left rounded corners to be transparent, repeat this to all corners
  • Set a very unlikely color as your form background color
  • Set this color as the TransparencyKey on your form
  • Add the images as PictureBox and put them to the corresponding corners

Viola!




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


来源:https://stackoverflow.com/questions/10674228/form-with-rounded-borders-in-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!