1. 程式人生 > >Python繪圖庫Turtle詳細分析

Python繪圖庫Turtle詳細分析

兩個 狀態 繪制 詳解 小數 函數 pre 當前 height

Turtle庫是Python語言中一個很流行的繪制圖像的函數庫,想象一個小烏龜,在一個橫軸為x、縱軸為y的坐標系原點,(0,0)位置開始,它根據一組函數指令的控制,在這個平面坐標系中移動,從而在它爬行的路徑上繪制了圖形。

turtle繪圖的基礎知識

  1. 畫布(canvas)

畫布就是turtle為我們展開用於繪圖區域,我們可以設置它的大小和初始位置。

設置畫布大小

turtle.screensize(canvwidth=None, canvheight=None, bg=None),參數分別為畫布的寬(單位像素), 高, 背景顏色。

如:turtle.screensize(800,600, "green")

turtle.screensize() #返回默認大小(400, 300)

turtle.setup(width=0.5, height=0.75, startx=None, starty=None),參數:width, height: 輸入寬和高為整數時, 表示像素; 為小數時, 表示占據電腦屏幕的比例,(startx, starty): 這一坐標表示矩形窗口左上角頂點的位置, 如果為空,則窗口位於屏幕中心。

如:turtle.setup(width=0.6,height=0.6)

turtle.setup(width=800,height=800, startx=100, starty=100)

  1. 畫筆

2.1 畫筆的狀態

在畫布上,默認有一個坐標原點為畫布中心的坐標軸,坐標原點上有一只面朝x軸正方向小烏龜。這裏我們描述小烏龜時使用了兩個詞語:坐標原點(位置),面朝x軸正方向(方向), turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態。

2.2 畫筆的屬性

畫筆(畫筆的屬性,顏色、畫線的寬度等)

1) turtle.pensize():設置畫筆的寬度;

2) turtle.pencolor():沒有參數傳入,返回當前畫筆顏色,傳入參數設置畫筆顏色,可以是字符串如"green", "red",也可以是RGB 3元組。

3) turtle.speed(speed):設置畫筆移動速度,畫筆繪制的速度範圍[0,10]整數,數字越大越快。

2.3 繪圖命令

操縱海龜繪圖有著許多的命令,這些命令可以劃分為3種:一種為運動命令,一種為畫筆控制命令,還有一種是全局控制命令。

(1) 畫筆運動命令
技術分享圖片

(2) 畫筆控制命令
技術分享圖片

(3) 全局控制命令
技術分享圖片

(4) 其他命令
技術分享圖片

  1. 命令詳解

3.1 turtle.circle(radius, extent=None, steps=None)

描述:以給定半徑畫圓

參數:

radius(半徑):半徑為正(負),表示圓心在畫筆的左邊(右邊)畫圓;

extent(弧度) (optional);

steps (optional) (做半徑為radius的圓的內切正多邊形,多邊形邊數為steps)。

舉例:

circle(50) # 整圓;

circle(50,steps=3) # 三角形;

circle(120, 180) # 半圓

turtle實例
畫愛心丘比特之劍

from turtle import*
setup(750,500)
penup()
pensize(25)
pencolor("pink")
fd(-230)
seth(90)
pendown()
circle(-50,180)
circle(50,-180)
circle(75,-50)
circle(-190,-45)
penup()
fd(185)
seth(180)
fd(120)
seth(90)
pendown()
circle(-75,-50)
circle(190,-45)
penup()
fd(184)
seth(0)
fd(80)
seth(90)
pendown()
circle(-50,180)
circle(50,-180)
circle(75,-50)
circle(-190,-45)
penup()
fd(185)
seth(180)
fd(120)
seth(90)
pendown()
circle(-75,-50)
circle(190,-45)
penup()
fd(150)
seth(180)
fd(300)
pencolor("red")
pensize(10)
pendown()
fd(-500)
seth(90)
fd(30)
fd(-60)
seth(30)
fd(60)
seth(150)
fd(60)
done()

效果圖:
技術分享圖片

Python繪圖庫Turtle詳細分析