Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

c#

.net

winforms

Is there any way of creating a non rectangular window form, such as circle or ellipse, in c# or .net?
I saw these unique windows form shapes and they look really neat in several installations I've seen.

Also, is there any disadvantage in using this kind of design for non standard forms, such as sustainability, crashes, etc.?

like image 455
shahar_m Avatar asked Mar 26 '11 20:03

shahar_m


2 Answers

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.

like image 196
Marek Kwiendacz Avatar answered Sep 25 '22 11:09

Marek Kwiendacz


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. :)

like image 38
buda Avatar answered Sep 21 '22 11:09

buda