微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在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))
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。