Python 如何制作透明的pygame.draw.circle
如何使Python 如何制作透明的pygame.draw.circle,python,python-3.x,pygame,Python,Python 3.x,Pygame,如何使pygame.draw.circle透明(添加alpha级别),如“surface”“set_alpha”? 我只找到了一个解决方案,那就是将pygame.draw.circle的颜色改为不太亮你必须使用。使用每像素alpha图像格式创建曲面。e、 g: radius=100 圆=pygame.Surface((半径*2,半径*2),pygame.SRCALPHA) 然后在上面画一个透明的圆圈。圆圈的颜色必须具有小于255的alpha通道(例如128): pygame.draw.circ
pygame.draw.circle
透明(添加alpha级别),如“surface”“set_alpha”?
我只找到了一个解决方案,那就是将pygame.draw.circle
的颜色改为不太亮你必须使用。使用每像素alpha图像格式创建曲面。e、 g:
radius=100
圆=pygame.Surface((半径*2,半径*2),pygame.SRCALPHA)
然后在上面画一个透明的圆圈。圆圈的颜色必须具有小于255的alpha通道(例如128):
pygame.draw.circle(圆,(255,0,0,128),(半径,半径),半径)
把表面贴到窗户上。e、 g:
window.blit(圆圈,(100100))
例如:
导入pygame
pygame.init()
wndsize=(400400)
window=pygame.display.set_模式(wndsize)
clock=pygame.time.clock()
运行=真
运行时:
时钟滴答(60)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
窗口填充(0)
pygame.draw.rect(窗口,(0,0255)、(0,0200400))
半径=100
圆=pygame.Surface((半径*2,半径*2),pygame.SRCALPHA)
pygame.draw.circle(圆,(255,0,0,128),(半径,半径),半径)
窗玻璃(圆形,(100100))
pygame.display.flip()
您可以使用alpha通道创建曲面
surface1 = screen.convert_alpha()
用透明颜色填充-
surface1.fill([0,0,0,0])
使用颜色绘制圆[R,G,B,Alpha]
pygame.draw.circle(surface1, (255, 0, 0, 128), (300, 300), 200)
并在屏幕上显示
screen.blit(surface1, (0,0))
但alpha总是将对象颜色与背景颜色混合在一起,这样会使其亮度降低
GitHub上的示例:
所以你想在一个表面上画一个透明的圆圈,也就是说,在位图上画一个圆形的“洞”?如果你与黑色背景混合,那么它的亮度就必须降低
import pygame
pygame.init()
screen = pygame.display.set_mode((800,600))#, depth=32)
surface1 = screen.convert_alpha()
surface1.fill([0,0,0,0])
pygame.draw.circle(surface1, (255, 0, 0, 128), (325, 250), 100)
surface2 = screen.convert_alpha()
surface2.fill([0,0,0,0])
pygame.draw.circle(surface2, (0, 255, 0, 128), (475, 250), 100)
surface3 = screen.convert_alpha()
surface3.fill([0,0,0,0])
pygame.draw.circle(surface3, (0, 0, 255, 128), (400, 350), 100)
screen.fill([255,255,255]) # white background
screen.blit(surface1, (0,0))
screen.blit(surface2, (0,0))
screen.blit(surface3, (0,0))
pygame.display.flip()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
pygame.quit()