turtle是python编程的一个非标准库,可以通过机器指令的方式来在一款空白的画布上完成绘图。
可以将它理解成生活中一个画笔,通过调整画笔的颜色、宽度等、其次设置画笔的轨迹从而画出一幅图。
绘画时默认的画笔起点就是屏幕的正中间位置(也就是坐标0,0),画笔的命令一般分为两种。
一种是设置画笔参数的相关指令,另一种则是画笔的运动指令,也就是画笔绘画的轨迹设定,再对轨迹运动后产生的图形进行图案的填充即可完成。
1. 全局指令设置
一般在开始绘画之前会进行对画笔全局参数指定的设置,并且可以将一些公共的后期绘画过程中不会改变的属性进行设置。
Turtle 函数使用 | 相关函数说明 |
turtle.clear() | 清空画布中的内容,但是此时画笔的起点还是在原来的位置不会改变 |
turtle.reset() | 清空画布中的内容,并且画笔状态为起始状态 |
turtle.undo() | 撤销上一个绘画动作 |
turtle.isvisible() | 查看当前画笔的状态是否为可见状态 |
stamp() | 复制当前画好的图形 |
turtle.write(s [,font=(“font-name”,font_size,“font_type”)]) | 向画布中写入内容,并设置写入内容的大小、颜色等 |
2. 画笔属性控制
通过对画笔的宽度、速度、颜色等相关的参数设置实现比较漂亮的绘图效果,若是不喜欢画笔在画布上面的展示还可以将其隐藏等等。
Trutle 函数使用 | 相关函数说明 |
turtle.pensize() | 设置画笔的宽度 |
turtle.pencolor(color) | 设置画笔的颜色,颜色支持三种格式的颜色表示方法 |
turtle.speed(speed) | 设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快 |
turtle.fillcolor(colorstring) | 绘制图形的填充颜色,一般放在开始填充、结束填充的函数之间 |
turtle.color(color1, color2) | 第一个参数为画笔颜色设置、第二个则为填充颜色 |
turtle.filling() | 查看当前是否在填充状态 |
turtle.begin_fill() | 开始填充颜色 |
turtle.end_fill() | 结束填充颜色 |
turtle.hideturtle() | 隐藏画笔 |
turtle.showturtle() | 显示画笔 |
3. 画笔轨迹设置
整个绘图的图形、轮廓等绘制都是通过不断的调整画笔的运动参数以及画笔的抬起或放下来完成的,就是模仿一个人的绘画过程来实现的。
Turtle 函数使用 | 相关函数说明 |
turtle.forward(distance) | 向当前画笔方向移动distance像素长度 |
turtle.backward(distance) | 向当前画笔相反方向移动distance像素长度 |
turtle.right(degree) | 顺时针移动degree° |
turtle.left(degree) | 逆时针移动degree° |
turtle.pendown() | 移动时绘制图形,缺省时也为绘制 |
turtle.goto(x,y) | 将画笔移动到坐标为x,y的位置 |
turtle.penup() | 提起笔移动,不绘制图形,用于另起一个地方绘制 |
turtle.circle(radius,extent) | 根据半径radius绘制extent角度的弧形,若是绘制圆形则不需要extent参数 |
turtle.setx() | 将当前x轴移动到指定位置 |
turtle.sety() | 将当前y轴移动到指定位置 |
turtle.setheading(angle) | 设置画笔箭头的朝向 |
turtle.home() | 将当前画笔的坐标位置设置为原点 |
turtle.dot() | 绘制一个指定直径和颜色的圆点 |
turtle.setpos(x,y) | 设置画笔的位置(x,y)坐标 |
turtle.pos() | 获取当前的画笔的坐标位置 |
turtle.xcor() | 获取X坐标值 |
turtle.ycor() | 获取Y坐标值 |
若是没有安装turtle小乌龟的可以pip的方式安装一下即可,将命令放在下面。
pip install turtle -i https://pypi.tuna.tsinghua.edu.cn/simple/
4. 玫瑰花绘制
在其他平台上发现的玫瑰花的绘制过程,这里优化了一下隐藏了一些参数以及设置了画笔相关的属性,如有雷同、纯属巧合。
Importing the turtle module and renaming it to tle.
import turtle as tle
# 初始化画笔的全局参数属性设置
tle.hideturtle()
tle.pensize(3)
tle.penup()
tle.left(90)
tle.forward(200)
tle.pendown()
tle.right(90)
# 绘制玫瑰花的花蕊画笔运动轨迹设置
tle.fillcolor("red")
tle.begin_fill()
tle.circle(10, 180)
tle.circle(25, 110)
tle.left(50)
tle.circle(60, 45)
tle.circle(20, 170)
tle.right(24)
tle.forward(30)
tle.left(10)
tle.circle(30, 110)
tle.forward(20)
tle.left(40)
tle.circle(90, 70)
tle.circle(30, 150)
tle.right(30)
tle.forward(15)
tle.circle(80, 90)
tle.left(15)
tle.forward(45)
tle.right(165)
tle.forward(20)
tle.left(155)
tle.circle(150, 80)
tle.left(50)
tle.circle(150, 90)
tle.end_fill()
# 绘制玫瑰花的上部分花瓣的运动轨迹参数设置
tle.left(150)
tle.circle(-90, 70)
tle.left(20)
tle.circle(75, 105)
tle.setheading(60)
tle.circle(80, 98)
tle.circle(-90, 40)
# 绘制玫瑰花的下部分花瓣的运动轨迹参数设置
tle.left(180)
tle.circle(90, 40)
tle.circle(-80, 98)
tle.setheading(-83)
# 绘制玫瑰花的上部分绿叶的运动轨迹参数设置
tle.forward(30)
tle.left(90)
tle.forward(25)
tle.left(45)
tle.fillcolor("green")
tle.begin_fill()
tle.circle(-80, 90)
tle.right(90)
tle.circle(-80, 90)
tle.end_fill()
tle.right(135)
tle.forward(60)
tle.left(180)
tle.forward(85)
tle.left(90)
tle.forward(80)
# 绘制玫瑰花的下部分绿叶的运动轨迹参数设置
tle.right(90)
tle.right(45)
tle.fillcolor("green")
tle.begin_fill()
tle.circle(80, 90)
tle.left(90)
tle.circle(80, 90)
tle.end_fill()
tle.left(135)
tle.forward(60)
tle.left(180)
tle.forward(60)
tle.right(90)
tle.circle(200, 60)
# 完成绘图
tle.done()
「Python 集中营」,只做知识分享 !
联系客服