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.