2008-12-09 12 views
4

Je suis en train de créer une application comme celle ici:Comment mélanger les cercles dessinés avec pygame

http://www.eigenfaces.com/

Fondamentalement beaucoup de cercles qui se chevauchent dessinés avec pygame. Je ne peux pas comprendre comment les cercles se mélangent pour les rendre translucides. C'est d'avoir des couleurs qui se chevauchent. Mon code à ce jour est le suivant:

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() 

Répondre

6

Je l'ai à travailler en tirant sur une surface qui n'est pas l'affichage et la combinaison du colorkey et FIXER fonctions alpha.

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 Il y a aussi les drapeaux de mélange que vous pouvez mettre dans les arguments blit(): Pygame.org - Surface.blit

Questions connexes