9

I've created a form with rounded corners using Form.Region. It works, but unfortunately the rounding appears rough. Are there any tricks for smoothing such shaped form corners? I know many applications support this, just not sure how to make it in .NET.

Thanks guys.

SharpAffair
  • 5,558
  • 13
  • 78
  • 158

2 Answers2

10

There is no good fix for this, regions cannot be anti-aliased. This is inevitable, anti-aliasing only works when you know the background colors so you can blend properly. That's not an option for windows, the background is by design unpredictable. If this is a splash screen then you can fake it by taking a screen shot of the background and drawing your fake window on top of it. Won't work for more than a few seconds.

Best thing to do is to keep the corner radius small so it is not so noticeable. Also use a tool like SysInternals' ZoomIt and take a close look at the rounded corners of a program like Windows Media Player. Note the gray tones it uses to draw the border.

Hans Passant
  • 922,412
  • 146
  • 1,693
  • 2,536
8

From what I've read online most people end up overriding the forms onpaint event and drawing the region there. This allows them to use GDI+ with antialiasing and make it look much cleaner.

The examples I found:

http://netcode.ru/dotnet/?lang=&katID=30&skatID=283&artID=7833 http://www.xtremevbtalk.com/showthread.php?t=288178

Peter
  • 9,643
  • 6
  • 61
  • 108