I'm using Pygame to draw some things. The problem is that they have a lot of aliased edges:
I want to make them softer, like this:
My idea so far was to draw the shape in double size, and then use
pygame.transform.smoothscale(surf, (w/2, h/2))
to shrink it to the size I want.
Unfortunately if I'm drawing my shapes on a transparent surface, the smoothscale turns the edges that were touching transparent pixels black!
In order to draw antialiased filled shapes with pygame, use the module gfxdraw
and draw one antialiased outline and one regular filled shape. From http://www.pygame.org/docs/ref/gfxdraw.html:
To draw an anti aliased and filled shape, first use the aa* version of the >function, and then use the filled version.
Note that you need to import gfxdraw
explicitly, i.e. from pygame import gfxdraw
.