Как сделать круг полупрозрачным в Pygame? - PullRequest
2 голосов
/ 31 мая 2019

Я хочу сделать частично прозрачный круг в качестве индикатора области эффекта, но я не нашел никакого способа сделать это в Pygame.

Я попытался передать кортеж rgba 4 в качестве аргумента (как предложено в этом посте ), но это никак не изменило прозрачность. Кроме того, согласно этому другому посту , метод вообще не должен работать, так как draw не принимает альфа-значения. Это противоречивая информация.

pygame.draw.circle(screen, (255, 0, 0, 100), (x, y), r)

Я также пытался создать новую поверхность, нарисовав круг на этой поверхности, а затем перетащив новую поверхность на мой игровой экран (как предложено в этом посте ). Это дает мне полупрозрачный круг в соответствии с просьбой, но поскольку поверхности в Pygame являются прямоугольными, это также дает мне серый прямоугольник вокруг круга, который я не хочу.

s = pygame.Surface((1000, 1000))
s.set_alpha(100)
pygame.draw.circle(s, (255, 0, 0), (x, y), r)
screen.blit(s, (0, 0))

Есть ли способ сделать этот круг полупрозрачным, не добавляя никаких других видимых эффектов на мой экран?

1 Ответ

2 голосов
/ 31 мая 2019

Вот работоспособная версия ответа на последний вопрос, который вы связали с названием Как нарисовать полупрозрачный круг в Pygame? .Кажется, он делает то, что ты хочешь, насколько я могу судить.

import pygame

width, height = 640, 480

pygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode((width,height))
surface = pygame.display.set_mode((width,height), pygame.SRCALPHA)

while True:
    msElapsed = clock.tick(100)
    screen.fill((255,255,255))
    pygame.draw.circle(surface,(30,224,33,100),(250,100),10)
    screen.blit(surface, (0,0))
    pygame.display.update()

    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            exit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...