Я просмотрел в Интернете довольно много руководств, но я не могу нарисовать полупрозрачный красный круг на поверхности.
Я хочу, чтобы этот метод использовался для выделения спрайта полупрозрачным красным кругом:
def highlight(self):
s = pygame.Surface((self.rect[2]*2,self.rect[3]*2)) #create a surface to draw circle on twice as big as the sprite rectangle)
s.fill((0,0,0)) #fills the surface with black
pygame.draw.circle(s, (255,0,0), self.rect.center, self.rect[3], 0) # draws red circle on the surface
s.set_colorkey((0,0,0)) # makes the black surface background transparent
s.set_alpha(50) # makes the whole surface translucent (i.e. the red circle remaining)
variables.screen.blit(s, (self.rect[0]-self.rect[2]/2,self.rect[1]-self.rect[3]/2)) #blit's the red circle centered on my sprite.
Я действительно не знаю, что я делаю неправильно... Я могу получить красный круг, просто используя:
def highlight(self):
pygame.draw.circle(DISPLAYSURF, (255,0,0), self.rect.center, self.rect[3], 0) # with display surf as my background for the whole game
Но я не могу сделать его прозрачным. Я также не хочу использовать gfxdraw, поскольку он говорит, что он может не поддерживаться в будущих версиях Pygame.
Спасибо за помощь.
pygame.Surface((w, h), pygame.SRCALPHA, 32)
, и рисуете круг цветом (255,0,0,50), где 50 — это альфа. В этом случае вы просто рисуете круг, не используяset_colorkey()
илиset_alpha()
. - person Mikhail V   schedule 04.05.2016