簡體   English   中英

如何在 Pygame 中畫一個半透明的圓圈?

[英]How to draw a semi-transparent circle in Pygame?

我正在嘗試在 Pygame 中繪制一個半透明的圓圈。 這是我的代碼:

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

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

    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            exit()

我想使用 RGBA 作為圓形顏色。 但圓圈是全彩色的。 我的代碼有什么問題?

使固定:

首先,您需要創建一個接受透明度的表面

surface = pygame.Surface((width,height), pygame.SRCALPHA)

然后從這一行:

pygame.draw.circle(screen,(30,224,33,100),(250,100),10)

screen更改為surface ,使其看起來像:

pygame.draw.circle(surface,(30,224,33,100),(250,100),10)

然后添加:

screen.blit(surface, (0,0))

解釋:

當您在屏幕上繪制圓圈時,它會忽略透明度值,因為 pygame 屏幕無法接受它們。 我所做的是創建一個可以接受透明度的新圖層/屏幕(由於這個參數pygame.SRCALPHA ),然后將該圖層/屏幕粘貼到原始屏幕的頂部。

這個是為我工作的

def draw_transparent_circle(win,x,y,radius,color,alpha_level):
    pygame.gfxdraw.filled_circle(win,x,y,radius,(color[0],color[1],color[2],alpha_level))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM