How to create a non rectangular window form in c#?

Form has Region property and you can assign there any shape that you create. For example to create oval form you can use this code in Form1_Load() method of form:

 var path = new GraphicsPath();

 path.AddEllipse(0, 0, Width, Height);
 Region = new Region(path);

The risk is that when you create non-rectangular form and close, minimalize buttons are cut off by region then some of end-users could have problems with closing your application.


I worked with something like that. You can override the OnPaint method. Something like this:

protected override void OnPaint( System.Windows.Forms.PaintEventArgs e )
{
    GraphicsPath wantedshape = new GraphicsPath();
    wantedshape.AddEllipse(0, 0, this.Width, this.Height);
    this.Region = new Region(wantedshape);
}

And set the FormBorderStyle property to FormBorderStyle.None.

And there is no risk to use non standard forms. Just create an application that your users want. :)


The simplest way is to make a window with no border and transparent background, and use an image to define the actual shape. Alternatively, you can make a window with a custom Region that defines the shape.

Tags:

C#

.Net

Winforms