Python第十三课:图形绘制turtle库

a在这里插入图片描述

Python蟒蛇绘制

import turtle

turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(20)
turtle.pencolor('pink')
turtle.seth(-40)

for i in range(4):
    turtle.circle(40,80)
    turtle.circle(-40,80)

turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(40*2/3)
turtle.done()

一、turtle库概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、turtle的绘图窗体

turtle的画布空间,最小单位是像素。
在这里插入图片描述
位置参数不一样,窗体出现在电脑中的位置也会不一样。
在这里插入图片描述

三、turtle的空间坐标体系

  • 绝对坐标与goto()函数
    在这里插入图片描述
    在这里插入图片描述
import turtle

turtle.setup(650,350,200,200)
turtle.goto(100,100)
turtle.goto(100,-100)
turtle.goto(-100,-100)
turtle.goto(-100,100)
turtle.goto(0,0)
turtle.done()

呈现的效果如下图:
在这里插入图片描述

  • 海龟坐标
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
import turtle

turtle.fd(100)
turtle.circle(100,360)
turtle.bk(100)
turtle.circle(100,360)
turtle.fd(100)
turtle.done()

以上代码的结果如下图:
在这里插入图片描述

四、turtle的角度坐标体系

  • 绝对角度
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 海龟角度
    在这里插入图片描述
import turtle

turtle.left(90)
turtle.fd(100)
turtle.right(90)
turtle.fd(100)
turtle.right(90)
turtle.fd(100)
turtle.right(90)
turtle.fd(100)
turtle.done()

以上代码的输出结果为:
在这里插入图片描述

五、RGB色彩模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、turtle的画笔控制函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、其他补充

基础概念

1、画布:画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置。常用的画布方法有两个:screensize()和setup()。

  • turtle.screensize(canvwidth, canvheight, bg):参数分别为画布的宽(单位像素), 高, 背景颜色

    如:turtle.screensize(500,1000,‘green’)

  • turtle.setup(width, height, startx, starty):width, height:

    输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例。(startx, starty): 这一坐标表示 矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。

2、画笔:在画布上,默认有一个坐标原点为画布中心的坐标轴, 坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:标原点(位置),面朝x轴正方向(方向),turtle绘图中, 就是使用位置方向描述小乌龟(画笔)的状态。

  • 画笔属性:

    1. turtle.pensize():设置画笔的宽度;

    2. turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", “red”,也可以是RGB 3元组。

    3. turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。

  • 绘制命令:

    1)turtle.forward(distance)(别名:turtle.fd):向当前画笔方向移动distance像素长度。

    2)turtle.backward(distance):向当前画笔相反方向移动distance像素长度。

    3)turtle.right(degree):顺时针移动degree°。

    4)turtle.left(degree):逆时针移动degree°。

    5)turtle.pendown()(别名:turtle.pd(),turtle.down()):移动时绘制图形,缺省时也为绘制。

    6)turtle.goto(x,y):将画笔移动到坐标为x,y的位置。

    7)turtle.penup()(别名:turtle.pu(),turtle.up()):提起笔移动,不绘制图形, 用于另起一个地方绘制。

    8)turtle.circle():画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆。

    9)setx( ):将当前x轴移动到指定位置。

    10)sety( ):将当前y轴移动到指定位置。

    11)setheading(angle):设置当前朝向为angle角度。

    12)home():设置当前画笔位置为原点,朝向东。

    13)dot®:绘制一个指定直径和颜色的圆点。

    14)turtle.fillcolor(colorstring):绘制图形的填充颜色。

    15)turtle.color(color1, color2):同时设置pencolor=color1, fillcolor=color2。

    16)turtle.filling():返回当前是否在填充状态。

    17)turtle.begin_fill():准备开始填充图形。

    18)turtle.end_fill():填充完成。

    19)turtle.hideturtle():隐藏画笔的turtle形状。

    20)turtle.showturtle():显示画笔的turtle形状。

    21)turtle.seth(to_angle)(别名:turtle.setheading(to_angle)):设置小海龟当前前进方向为to_angle,该角度是绝对方向的角度值。

七、练习

  1. 五角星
import turtle


turtle.penup()
turtle.fd(-200)
turtle.down()
turtle.pensize(2)
turtle.pencolor('yellow')

turtle.fillcolor('yellow')
turtle.begin_fill()
for i in range(5):
    turtle.fd(120)
    turtle.left(72)
    turtle.fd(120)
    turtle.right(144)
turtle.end_fill()

turtle.done()
  1. 八角图形
import turtle

turtle.pencolor('magenta')
for i in range(8):
    turtle.fd(200)
    turtle.left(135)

turtle.done()
  1. 八边形
import turtle

turtle.pencolor('purple')
for i in range(8):
    turtle.fd(100)
    turtle.left(45)

turtle.done()
  1. 圆套圆
import turtle
turtle.penup()
turtle.right(90)
turtle.fd(200)
turtle.left(90)
turtle.pendown()
turtle.pencolor('red')
turtle.circle(30)
turtle.pencolor('orange')
turtle.circle(60)
turtle.pencolor('yellow')
turtle.circle(90)
turtle.pencolor('green')
turtle.circle(120)
turtle.pencolor('cyan')
turtle.circle(150)
turtle.pencolor('blue')
turtle.circle(180)
turtle.pencolor('purple')
turtle.circle(210)

turtle.done()
  1. 心形函数
import turtle as t


def heart(r, a):
    factor = 180
    t.seth(a)
    t.circle(-r, factor)
    t.fd(2 * r)
    t.right(90)
    t.fd(2 * r)
    t.circle(-r, factor)


# 若要正着的心形,则seth的角度设置为45度
heart(90, 45)
  1. 数字0302
import turtle as t

t.penup()
t.fd(-250)
t.left(90)
t.fd(100)
t.right(90)
t.pendown()
t.pencolor('red')
t.pensize(5)

# 數字0
for i in range(2):
    t.fd(100)
    t.right(90)
    t.fd(200)
    t.right(90)

# 移動
t.penup()
t.fd(130)
t.pendown()

# 數字3
t.fd(100)
t.right(90)
t.fd(100)
t.right(90)
t.fd(100)
t.penup()
t.right(180)
t.fd(100)
t.pendown()
t.right(90)
t.fd(100)
t.right(90)
t.fd(100)

# 移動
t.right(180)
t.penup()
t.fd(130)
t.pendown()

# 數字0
for i in range(2):
    t.fd(100)
    t.left(90)
    t.fd(200)
    t.left(90)

# 移動
t.penup()
t.fd(230)
t.pendown()

# 數字2
t.left(180)
t.fd(100)
t.right(90)
t.fd(100)
t.right(90)
t.fd(100)
t.left(90)
t.fd(100)
t.left(90)
t.fd(100)

t.done()
  1. 五星红旗
import turtle as t


# 设置移动函数
def moveup(x, y):
    t.penup()
    t.goto(x, y)
    t.pendown()


# 五角星函数
def star(r):
    for i in range(5):
        t.fd(r)
        t.left(72)
        t.fd(r)
        t.right(144)


# 小五角星函数
def small_star(x, y, r):
    t.fillcolor('yellow')
    t.begin_fill()
    moveup(x, y)
    t.seth(r)
    star(6)
    t.end_fill()


# 设置屏幕大小
t.setup(600,600)
# 设置画笔尺寸
t.pensize(2)

moveup(-150, 0)
t.pencolor('red')
t.fillcolor('red')
t.begin_fill()

# 长方形旗面
for i in range(2):
    t.fd(300)
    t.left(90)
    t.fd(200)
    t.left(90)
t.end_fill()

# 移动到大五角星位置
t.penup()
t.fd(20)
t.left(90)
t.fd(150)
t.right(90)
t.pendown()

# 画笔更改为黄色
t.pencolor('yellow')
t.fillcolor('yellow')
t.begin_fill()
star(18)
t.end_fill()

# 第一个小五角星
small_star(-80, 170, 36)
# 第二个小五角星
small_star(-60, 150, 36)
# 第三个小五角星
small_star(-60, 130, 0)
# 第四个小五角星
small_star(-80, 110, 36)

# 隐藏画笔
t.hideturtle()
t.done()
发布了35 篇原创文章 · 获赞 4 · 访问量 5291

猜你喜欢

转载自blog.csdn.net/fightingoyo/article/details/104614045