Формы сглаживания в Pygame
Я использую Pygame для рисования некоторых вещей. Проблема в том, что у них много сглаженных ребер:
![Aliased concentric circles]()
Я хочу сделать их более мягкими, например:
![Smooth concentric circles]()
Моя идея до сих пор заключалась в том, чтобы нарисовать фигуру в двойном размере, а затем использовать
pygame.transform.smoothscale(surf, (w/2, h/2))
чтобы уменьшить размер до требуемого размера.
К сожалению, если я рисую свои фигуры на прозрачной поверхности, плавный кружок поворачивает края, которые касаются прозрачных пикселей черного цвета.
- Как сгладить изображение без преобразования альфа-прозрачных пикселей в черный цвет или
- Как еще я вижу края сглаживания?
Ответы
Ответ 1
Чтобы нарисовать сглаженные заполненные фигуры с pygame, используйте модуль gfxdraw
и нарисуйте одну регулярную заполненную фигуру и один сглаженный контур. Из http://www.pygame.org/docs/ref/gfxdraw.html:
"Чтобы нарисовать сглаженную и заполненную форму, сначала используйте версию функции aa *, а затем используйте заполненную версию."
Обратите внимание, что вам нужно явно импортировать gfxdraw
, т.е. from pygame import gfxdraw
.