我想在pygame中画一个空的圆圈,我的意思是你应该从中看到曲面的背面。
我写了一段代码,查找一个表面上所有的彩色像素,然后在另一个表面上清空它们的坐标。
def draw_empty(surf1, surf2, pos):
"""makes surf2 pixels empty on surf1"""
pixobj2 = pygame.PixelArray(surf2)
empty = []
for x in range(len(pixobj2)):
for y in range(len(pixobj2[x])):
if pixobj2[x][y]!=0:
empty.append((x,y))
del pixobj2
pixobj1 = pygame.PixelArray(surf1)
for pix in empty:
pixobj1[pix[0]+pos[0]][pix[1]+pos[1]] = 0
del pixobj1
window = pygame.display.set_mode((600, 600))
white_surf = pygame.surface.Surface((600, 600))
white_surf.fill((255, 255, 255))
circle_surf = pygame.surface.Surface((50, 50))
pygame.draw.circle(circle_surf, (1, 1, 1), circle_surf.get_rect().center, 25)
pic = pygame.image.load('pic.png')
pic = pygame.transform.scale(pic, (600, 600))
done = False
while not done:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
draw_empty(white_surf, circle_surf, (200, 200))
window.blit(pic, (0, 0))
window.blit(white_surf, (0, 0))
pygame.display.update()
pygame.time.Clock().tick(60)
我希望通过那个圆圈看到背景图片,但是我只是黑色的圆圈,这样做有可能吗?有人可以帮我吗?
P.S。 空,我的意思是说我的前表面就像一个洞
答案 0 :(得分:0)
只需使用draw()
函数:
pygame.draw.circle(Surface, color, pos, radius, width=0)
width
代表圆周曲线的大小。为0时,圆圈为实心。如果将其设置为1,则边缘将只有一个像素宽(一个空圆)。
编辑:使用精灵绘制圆,可以使用以下代码†:
import pygame
import pygame.gfxdraw
IMG = pygame.Surface((30, 30), pygame.SRCALPHA)
pygame.gfxdraw.aacircle(IMG, 15, 15, 14, (0, 255, 0))
pygame.gfxdraw.filled_circle(IMG, 15, 15, 14, (0, 255, 0))
class img(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = IMG
self.rect = self.image.get_rect(center=(150, 200))
†代码信用转到dunker_wanderer