繁体   English   中英

如何为 pygame.draw.lines 中的每一行使用不同的 colors

[英]How to use different colors for each line in pygame.draw.lines

我最近开始学习pygame ,这就是我的问题。 无论如何我可以为使用 pygame.draw.lines 绘制的每条线使用不同的pygame.draw.lines吗? 这是我的代码。

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480), pygame.SCALED)
screen.fill('white')

pygame.draw.lines(screen, 'red', True, [(10, 100), (20, 200), (30, 100)]) # all lines are red

while True:
    pygame.display.update()

Output 我明白了

我得到的输出

Output 我要

我想要的输出

我试过的

 pygame.draw.lines(screen, ['green', 'blue', 'orange'], True, [(10, 100), (20, 200), (30, 100)])

错误

ValueError: invalid color argument

换句话说,我想在下面的代码中实现我想要的,但使用pygame.draw.lines

pygame.draw.line(screen, 'green', (10, 100), (20, 200))
pygame.draw.line(screen, 'blue', (20, 200), (30, 100))
pygame.draw.line(screen, 'orange', (30, 100), (10, 100))

我检查了pygame.draw.lines文档,但我不确定那里的color参数是否需要我给出的列表。 它只提到“ Color or int or tuple(int, int, int, [int]))

这个例子是一个三角形,但在我的实际用例中,我想画一个十边形,如果我想为每条线使用不同的颜色,我不确定是否使用pygame.draw.line 10 次是通往 go 的方法。

PS:如果需要任何澄清,请告诉我。 非常感谢。

您必须分别绘制每个线段。 编写一个使用点列表的 function 和 colors 来画线:

def draw_colorful_line(surf, colors, closed, points, width=1):
    for i in range(len(points)-1):
        pygame.draw.line(surf, colors[i], points[i], points[i+1], width)
    if closed:
        pygame.draw.line(surf, colors[-1], points[-1], points[0], width)

使用 function 画线:

colors = ['green', 'blue', 'red']
points = [(10, 100), (20, 200), (30, 100)]
draw_colorful_line(screen, colors, True, points)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM