pygame.draw
функции не будут рисоваться с альфа-каналом. В документации сказано:
Большинство аргументов принимают цветной аргумент, который является триплетом RGB. Они также могут принимать четверку RGBA. Альфа-значение будет записано непосредственно в Surface, если оно содержит альфа-пиксели, но функция рисования не будет рисовать прозрачно.
Что вы можете сделать, это создать вторую поверхность, а затем перетащить ее на экран. Блиттинг будет делать альфа-смешивание и цветовые ключи. Кроме того, вы можете указать альфа на уровне поверхности (быстрее и меньше памяти) или на уровне пикселей (медленнее, но точнее). Вы можете сделать либо:
s = pygame.Surface((1000,750)) # the size of your rect
s.set_alpha(128) # alpha level
s.fill((255,255,255)) # this fills the entire surface
windowSurface.blit(s, (0,0)) # (0,0) are the top-left coordinates
или
s = pygame.Surface((1000,750), pygame.SRCALPHA) # per-pixel alpha
s.fill((255,255,255,128)) # notice the alpha value in the color
windowSurface.blit(s, (0,0))
Имейте в виду, что в первом случае все, что вы рисуете в s
, будет сглажено указанным вами значением альфа. Поэтому, если вы используете это, например, для рисования элементов управления наложением, вам лучше использовать второй вариант.
Также рассмотрите возможность использования pygame.HWSURFACE для создания поверхности с аппаратным ускорением.
Проверьте документацию Surface на сайте Pygame, особенно вступление.