Python 在pygame中为移动对象添加渐变
我想在这个程序中为球添加渐变&也可能是波浪被吸引到背景的颜色中,就像发光一样,而不是一种颜色填充 我已经看了很多教程,但是没有一个对我的语法有多大意义,对我来说,一般的想法是令人困惑的,因为我有移动的对象,它们绘制了我想要添加渐变的空间。有人能告诉我如何做到这一点吗 代码: 使用空格更改背景色 第一行仅使用透明度-并且对于不同的背景色没有问题。 第二行只改变圆圈的颜色,这取决于背景颜色。 第三行和第四行是同一行,起始颜色不同,颜色和透明度不同,取决于背景颜色 第二行和最后一行在一种颜色背景下看起来不错,需要更多的工作来找到好看的褪色Python 在pygame中为移动对象添加渐变,python,pygame,gradient,trigonometry,Python,Pygame,Gradient,Trigonometry,我想在这个程序中为球添加渐变&也可能是波浪被吸引到背景的颜色中,就像发光一样,而不是一种颜色填充 我已经看了很多教程,但是没有一个对我的语法有多大意义,对我来说,一般的想法是令人困惑的,因为我有移动的对象,它们绘制了我想要添加渐变的空间。有人能告诉我如何做到这一点吗 代码: 使用空格更改背景色 第一行仅使用透明度-并且对于不同的背景色没有问题。 第二行只改变圆圈的颜色,这取决于背景颜色。 第三行和第四行是同一行,起始颜色不同,颜色和透明度不同,取决于背景颜色 第二行和最后一行在一种颜色背景下看起
import pygame
pygame.init()
screen = pygame.display.set_mode((600,200))
#--------------------------------------
# circles positions and transparency (x,y, alpha)
circles = []
for x in range(100):
circles.append( [100+x*3, 200, x*2] )
#--------------------------------------
white = True # background color
#--------------------------------------
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
elif event.key == pygame.K_SPACE:
white = not white
#--------------------------------------
if white:
screen.fill((255,255,255))
else:
screen.fill((0,0,0))
#--------------------------------------
# first
circle_img = pygame.Surface((20,20))
pygame.draw.circle(circle_img, (255,0,0), (10,10), 10)
circle_img.set_colorkey(0)
for x in circles:
circle_img.set_alpha(x[2])
screen.blit(circle_img, (x[0],40))
#--------------------------------------
# second
circle_img = pygame.Surface((20,20))
for x in circles:
pygame.draw.circle(circle_img, (255,255-x[2],255-x[2]), (10,10), 10)
circle_img.set_colorkey(0)
screen.blit(circle_img, (x[0],90))
#--------------------------------------
# last
circle_img = pygame.Surface((20,20))
for x in circles:
pygame.draw.circle(circle_img, (255,255-x[2],255-x[2]), (10,10), 10)
circle_img.set_colorkey(0)
circle_img.set_alpha(x[2])
screen.blit(circle_img, (x[0],140))
#--------------------------------------
pygame.display.flip()
pygame.quit()
你可以在Photoshop、Gimp甚至Inkscape中创建带有渐变的球的位图。它可以创建矢量图形,但你可以将其转换为位图。多亏了furas,渐变在创建条线时有一个有趣的用途。对于正弦波也可能有类似的发展吗?正弦波是由许多圆圈组成的-你可以使用带有圆圈的表面,并使用set_alpha使其透明。每个圆都可以有不同的透明,所以看起来可能会褪色。有没有可能举个例子?+我将继续研究这个问题
import pygame
pygame.init()
screen = pygame.display.set_mode((600,200))
#--------------------------------------
# circles positions and transparency (x,y, alpha)
circles = []
for x in range(100):
circles.append( [100+x*3, 200, x*2] )
#--------------------------------------
white = True # background color
#--------------------------------------
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
elif event.key == pygame.K_SPACE:
white = not white
#--------------------------------------
if white:
screen.fill((255,255,255))
else:
screen.fill((0,0,0))
#--------------------------------------
# first
circle_img = pygame.Surface((20,20))
pygame.draw.circle(circle_img, (255,0,0), (10,10), 10)
circle_img.set_colorkey(0)
for x in circles:
circle_img.set_alpha(x[2])
screen.blit(circle_img, (x[0],40))
#--------------------------------------
# second
circle_img = pygame.Surface((20,20))
for x in circles:
pygame.draw.circle(circle_img, (255,255-x[2],255-x[2]), (10,10), 10)
circle_img.set_colorkey(0)
screen.blit(circle_img, (x[0],90))
#--------------------------------------
# last
circle_img = pygame.Surface((20,20))
for x in circles:
pygame.draw.circle(circle_img, (255,255-x[2],255-x[2]), (10,10), 10)
circle_img.set_colorkey(0)
circle_img.set_alpha(x[2])
screen.blit(circle_img, (x[0],140))
#--------------------------------------
pygame.display.flip()
pygame.quit()