Ответ 1
pygame.draw
функции не будут рисоваться с помощью альфы. В документации указано:
Большинство аргументов принимают цветовой аргумент, который является триггером RGB. Они также могут принимать квадруплет RGBA. Значение альфа будет записано непосредственно в Поверхность, если оно содержит пиксельные альфы, но функция рисования не будет рисоваться прозрачно.
Что вы можете сделать, так это создать вторую поверхность, а затем выпустить ее на экран. Blitting будет выполнять альфа-смешивание и цветные клавиши. Кроме того, вы можете указать альфа на уровне поверхности (быстрее и меньше памяти) или на уровне пикселей (медленнее, но точнее). Вы можете сделать это:
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 docs на сайте pygame, особенно вступление.