Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何制作透明的pygame.draw.circle_Python_Python 3.x_Pygame - Fatal编程技术网

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()