Как совместить нарисованные круги с помощью pygame

Я пытаюсь создать приложение, подобное приведенному здесь:

http://www.eigenfaces.com/

В основном много пересекающихся кругов, нарисованных с помощью 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()
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
0
3 877
2

Ответы 2

Я заставил его работать, отрисовав поверхность, которая не является отображаемой, и объединив набор цветов и альфа-функции.

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. Удачи в ваших экспериментах. Я разместил код здесь:

http://www.eigenfaces.com/

Сообщите мне, если это будет полезно.

Кстати .. Еще с фильмами экспериментировал ... Вот примерно 20 кадров примерно по 1000 поколений в каждом:

http://www.eigenfaces.com/img/morphs/anim-100x20.gif

Другие вопросы по теме