在pygame中添加混合不适用于alpha

时间:2014-06-25 05:46:19

标签: python python-3.x pygame

我最近发现了你可以在pygame中应用于blitted表面的不同混合模式,我想看看系统的灵活性。除非我做错了什么,否则它显然非常有限(就像其余的pygame OOOOOOOH 射击一样)。我写了一个简单的程序,使用alpha绘制一堆渐变圆,并在屏幕上显示它们。这是代码:

import pygame
import pygame.gfxdraw
pygame.init()

import random

SCREEN = pygame.display.set_mode((800, 600))
SCREEN.fill((0, 0, 0))

def draw_square(surface, colour, x, y):
    """
    Yeah it's called draw square but it actually draws a circle thing I was just too lazy
    to change the name so you gotta deal with it.
    """
    square = pygame.Surface((100, 100))
    square.fill((0, 0, 0))
    colour += (int(15/255*100), )
    for i in range(25):
        pygame.gfxdraw.filled_circle(square, 50, 50, i*2, colour)
    # Comment the previous two lines out and uncomment the next line to see different results.
    # pygame.draw.circle(square, colour[:3], (50, 50), 50)
    surface.blit(square, (x - 50, y - 50), special_flags=pygame.BLEND_RGB_ADD)

running = True
while running:
    for evt in pygame.event.get():
        if evt.type == pygame.QUIT:
            running = False

    draw_square(SCREEN, (25, 255, 25), random.randint(0, 800), random.randint(0, 600))

    pygame.display.update()
pygame.quit()

在绘制普通圆时似乎有效,但在使用pygame.gfxdraw.filled_circle添加混合时绘制圆圈不起作用。有什么想法吗?

编辑:我正在使用Python 3,所以15/255正确评估浮动。

1 个答案:

答案 0 :(得分:1)

问题仍然在于这一行:

colour += (int(15/255*100), )

它应该最初变为白色,但是alpha值很低,需要很长时间(好吧,它理论上应该......)。

这样做的:

colour += (int(125/255*100), )

使效果更加明显。

结果: enter image description here