在pygame中绘制一个透明的矩形

问题描述

| 如何绘制具有Alpha颜色的矩形? 我有
windowSurface = pygame.display.set_mode((1000,750),pygame.DOUBLEBUF)
pygame.draw.rect(windowSurface,pygame.Color(255,255,128),pygame.Rect(0,1000,750))
但我希望白色矩形的透明度为50%,但Alpha值似乎无法正常工作。     

解决方法

        
pygame.draw
函数将不使用Alpha绘制。该文件说:   大多数自变量接受RGB三元组的color自变量。这些也可以接受RGBA四联体。如果Alpha值包含像素Alpha,则它将直接写入Surface,但是draw函数不会透明地绘制。 您可以做的是创建第二个曲面,然后将其调高到屏幕上。 Blitting将执行alpha混合和颜色键。另外,您可以在表面级别(更快和更少的内存)或像素级别(更慢但更精确)指定alpha。您可以执行以下任一操作:
s = pygame.Surface((1000,750))  # the size of your rect
s.set_alpha(128)                # alpha level
s.fill((255,255,255))           # this fills the entire surface
windowSurface.blit(s,(0,0))    # (0,0) are the top-left coordinates
要么,
s = pygame.Surface((1000,750),pygame.SRCALPHA)   # per-pixel alpha
s.fill((255,128))                         # notice the alpha value in the color
windowSurface.blit(s,0))
请记住,在第一种情况下,绘制到
s
的其他任何内容都会使用您指定的alpha值变白。因此,例如,如果您使用它来绘制叠加层控件,则最好使用第二种方法。 另外,考虑使用pygame.HWSURFACE创建硬件加速的曲面。 在pygame站点上查看Surface文档,尤其是Intro。     ,        我能为您提供的最大帮助是向您展示如何绘制未填充的矩形。 矩形的线是:
pygame.draw.rect(surface,[255,0],[50,50,90,180],1)
\“ 1 \”表示未填写     ,        一种方法是,不使用pygame绘制矩形,而是可以使用诸如paint.net或Fire Alpaca之类的绘制程序来创建透明矩形的图像。     ,        您可以在颜色元组中添加第四个值来表示Alpha:
pygame.draw.rect(windowSurface,(255,127),pygame.Rect(0,1000,750))