【问题标题】:How do I make a linear gradient with Python Turtle?如何使用 Python Turtle 制作线性渐变?
【发布时间】:2020-09-21 20:22:31
【问题描述】:

我目前正在尝试复制此图像: https://imgur.com/a/IZIPGkg 我试图在背景中制作渐变,但我对如何做到这一点一无所知,而且互联网上基本上没有任何内容。 编辑:如果有帮助,我有两端的 RGB 颜色。顶部是 rgb(154,0,254),底部是 rgb(221,122,80)。

【问题讨论】:

  • 由于您没有发布任何代码,因此很难说出您需要什么帮助。您是否知道如何做到这一点的高级概念并且正在努力实现海龟,或者您甚至不知道如何设计任何生成线性渐变的东西?如果您甚至在概念上都在苦苦挣扎,那么我会在编写代码之前专注于这一点。本质上,您想要生成一个像素高的水平线,第一行是一种颜色,结尾是另一种颜色,中间的每一行都有两种颜色的线性插值。这一切都有意义吗?
  • 正如 Random Davis 上面所说的,你需要把它分成小块。首先,您需要绘制平行线,每条线都具有不同的颜色。然后你需要计算每条线的颜色。选择其中一个并将其分解为更小的步骤。尝试分别找出这些部分,并在遇到特定问题时告诉我们。

标签: python turtle-graphics linear-gradients python-turtle


【解决方案1】:

粗略但相当快速有效:

from turtle import Screen, Turtle

COLOR = (0.60156, 0, 0.99218)  # (154, 0, 254)
TARGET = (0.86328, 0.47656, 0.31250)  # (221, 122, 80)

screen = Screen()
screen.tracer(False)

WIDTH, HEIGHT = screen.window_width(), screen.window_height()

deltas = [(hue - COLOR[index]) / HEIGHT for index, hue in enumerate(TARGET)]

turtle = Turtle()
turtle.color(COLOR)

turtle.penup()
turtle.goto(-WIDTH/2, HEIGHT/2)
turtle.pendown()

direction = 1

for distance, y in enumerate(range(HEIGHT//2, -HEIGHT//2, -1)):

    turtle.forward(WIDTH * direction)
    turtle.color([COLOR[i] + delta * distance for i, delta in enumerate(deltas)])
    turtle.sety(y)

    direction *= -1

screen.tracer(True)
screen.exitonclick()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-12
    • 2018-12-10
    • 2023-03-12
    • 2012-05-21
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多