[英]How to blend drawn circles with pygame
I am trying to create an application like the one here: 我正在尝试创建一个像这样的应用程序:
http://www.eigenfaces.com/ http://www.eigenfaces.com/
Basically lots of overlapping circles drawn with pygame. 基本上用pygame绘制了很多重叠的圆圈。 I cannot figure out how the blend the circles to make them translucent.
我无法弄清楚如何将圆圈混合成半透明。 That is to have overlapping colors show through.
那就是显示重叠的颜色。 My code so far is this:
到目前为止我的代码是这样的:
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()
I got it to work by drawing to a surface that is not the display and combining the set colorkey and set alpha functions. 我通过绘制到不是显示的表面并组合设置的颜色键和设置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()
PS There's also the blend flags that you can put in the blit() arguments: Pygame.org - Surface.blit PS还有可以放在blit()参数中的混合标志: Pygame.org - Surface.blit
I am Dave. 我是戴夫。 Creator of the images at eigenfaces.com.
eigenfaces.com上图像的创建者。 Good luck with your experiments.
祝你的实验好运。 I posted the code here:
我在这里发布了代码:
http://www.eigenfaces.com/ http://www.eigenfaces.com/
Let me know if it's of use. 让我知道它是否有用。
By the way.. I have also experimented with movies... Here is about 20 frames with about 1000 generations each: 顺便说一句..我也试过电影......这里约有20帧,每帧约1000代:
http://www.eigenfaces.com/img/morphs/anim-100x20.gif http://www.eigenfaces.com/img/morphs/anim-100x20.gif
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.