首页 > 解决方案 > 不使用 Turtle 渲染相同的图像

问题描述

我找到了将多边形组合成马赛克的这段代码。从这里看来,乌龟只会走这么快。我不需要手绘,只想看看渲染的图像。当然,不使用乌龟,我将不得不使用其他东西(我希望使用 PIL)。所以问题有两个方面:

  1. 在不使用 Turtle 的情况下,我如何仍然获得似乎绘制马赛克的向上和向左运动。

  2. 如何使用 PIL 作为图像展示平台?

然而,它似乎已经完成myPen.left()并且myPen.forward()绘图发生了:

import turtle
myPen = turtle.Turtle()
myPen.shape("arrow")

myPen.speed(1000)
def drawMosaic(color,numberOfSides,size,numberOfIterations):
 myPen.color(color)
 for i in range(0,numberOfIterations):
   for j in range (0,numberOfSides):
     myPen.forward(size)
     myPen.left(360 / numberOfSides)
   myPen.left(360 / numberOfIterations)

drawMosaic("#0B5CCB",8,40,10)
myPen.hideturtle()

标签: pythonpython-3.xpython-imaging-libraryturtle-graphics

解决方案


我不需要手绘,只想看看渲染的图像。

你可以在海龟中实现这一点。如果不关心绘制过程的动画,可以使用tracer()方法将其关闭:

from turtle import Screen, Turtle

def drawMosaic(color, numberOfSides, size, numberOfIterations):
    myPen.color(color)

    for _ in range(numberOfIterations):
        for _ in range(numberOfSides):
            myPen.forward(size)
            myPen.left(360 / numberOfSides)

        myPen.left(360 / numberOfIterations)

screen = Screen()

myPen = Turtle(visible=False)

screen.tracer(False)
drawMosaic("#0B5CCB", 8, 40, 10)
screen.tracer(True)

screen.exitonclick()

确保tracer()在完成绘图后重新打开以避免某些伪影(如损坏hideturtle()等)


推荐阅读