Я пытаюсь создать приложение, подобное приведенному здесь:
В основном много пересекающихся кругов, нарисованных с помощью pygame. Я не могу понять, как растушевать круги, чтобы сделать их полупрозрачными. То есть, чтобы просвечивались перекрывающиеся цвета. Мой код пока таков:
import sys, random, time
import pygame
from pygame.locals import *
from pygame import draw
rand = random.randint
pygame.init( )
W = 320
H = 320
size = (W, H)
screen = pygame.display.set_mode(size)
run = True
while 1:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE :
run = not run
else:
sys.exit()
if run:
xc = rand(1, W)
yc = rand(1, H)
rc = rand(1, 25)
red = rand(1, 255)
grn = rand(1, 255)
blu = rand(1, 255)
draw.circle(screen, (red, grn, blu, 200), (xc, yc), rc, 0)
pygame.display.flip()






Я заставил его работать, отрисовав поверхность, которая не является отображаемой, и объединив набор цветов и альфа-функции.
import pygame
from pygame.locals import *
TRANSPARENT = (255,0,255)
pygame.init()
screen = pygame.display.set_mode((500,500))
surf1 = pygame.Surface((200,200))
surf1.fill(TRANSPARENT)
surf1.set_colorkey(TRANSPARENT)
pygame.draw.circle(surf1, (0,0,200,100),(100,100), 100)
surf2 = pygame.Surface((200,200))
surf2.fill(TRANSPARENT)
surf2.set_colorkey(TRANSPARENT)
pygame.draw.circle(surf2, (200,0,0,100),(100,100), 100)
surf1.set_alpha(100)
surf2.set_alpha(100)
while True:
screen.fill((255,255,255))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
screen.blit(surf1, (100,100,100,100))
screen.blit(surf2, (200,200,100,100))
pygame.display.flip()
P.S Также есть флаги смешивания, которые вы можете указать в аргументах blit (): Pygame.org - Surface.blit
Я Дэйв. Создатель изображений на eigenfaces.com. Удачи в ваших экспериментах. Я разместил код здесь:
Сообщите мне, если это будет полезно.
Кстати .. Еще с фильмами экспериментировал ... Вот примерно 20 кадров примерно по 1000 поколений в каждом: