1. 程式人生 > 程式設計 >想學畫畫?python滿足你!

想學畫畫?python滿足你!

python中的繪圖工具有不少,比如Matplotlib等等,但這些只能用來畫表格,今天我們來介紹一款可以用來畫畫的庫——turtle。

一、繪圖原理

我們通過控制初始位置為(0,0)的海龜進行移動,根據一組函式指令的控制,在平面座標系中移動,從而在它爬行的路徑上繪製了圖形。

二、開始繪圖

turtle是python自帶的庫,我們直接import匯入即可

importturtle

設定繪圖區域屬性

繪圖區域背景色的設定

turtle.bgcolor('blue')

想學畫畫?python滿足你!

選擇想要的顏色即可

繪圖區域大小設定

turtle.setup(width=200,height=100)

引數:

width,height:

輸入寬和高為整數時,表示畫素;

為小數時,表示佔據電腦螢幕的比例。

畫筆繪製圖形

讓我們先簡單的畫一條直線

turtle.forward(100)

想學畫畫?python滿足你!

forward()是turtle的內建函式,表示從原點向前進多少距離。我們還可以控制畫筆的角度讓他轉彎。與之對應的是backward(),後退多少距離

turtle.backward(100)
turtle.left(60)
turtle.forward(100)

這裡的left()就表示畫筆的轉彎方向和角度了,相應的right則為向右轉。

想學畫畫?python滿足你!

如圖我們後退了100的距離然後向左偏轉60°又前進了100距離。其他常用引數請參考下面的表格

畫筆運動函式

函式 描述
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.speed(speed) 畫筆繪製的速度範圍[0,10]整數
turtle.circle() 畫圓,半徑為正(負),表示圓心在畫筆的左邊(右邊)畫圓

畫筆引數

命令 說明
turtle.pensize(width) 繪製圖形時的寬度
turtle.pencolor() 畫筆顏色
turtle.fillcolor(colorstring) 繪製圖形的填充顏色
turtle.color(color1,color2) 同時設定pencolor=color1,fillcolor=color2
turtle.filling() 返回當前是否在填充狀態
turtle.begin_fill() 準備開始填充圖形
turtle.end_fill() 填充完成;
turtle.hideturtle() 隱藏箭頭顯示;
turtle.showturtle() 與hideturtle()函式對應

全域性控制命令

命令 說明
turtle.clear() 清空turtle視窗,但是turtle的位置和狀態不會改變
turtle.reset() 清空視窗,重置turtle狀態為起始狀態
turtle.undo() 撤銷上一個turtle動作
turtle.isvisible() 返回當前turtle是否可見
stamp() 複製當前圖形
turtle.write(s[,font=("font-name",font_size,"font_type")]) 寫文字,s為文字內容,font是字型的引數,裡面分別為字型名稱,大小和型別;font為可選項,font的引數也是可選項

三、for迴圈語句

如果我們要畫一個正方形按照上邊的方法程式碼為

importturtle

turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)

一個簡單的四邊形就要如此重複,繪製更復雜的圖形還這樣做的話就顯得不科學了,這時候我們就要用到for迴圈了。使用for迴圈的語句優化過的程式碼為

totalTimes=4
fortimes inrange(totalTimes):
turtle.forward(100)
turtle.left(90)

想學畫畫?python滿足你!

四、簡單示例

繪製五角星

importturtle

t=turtle.Pen() #獲得畫筆
t.hideturtle() #隱藏箭頭
t.begin_fill() #填充圖形
forx inrange(1,6):
t.forward(100)
t.left(216) #在這裡先向右直行,然後左轉216°(左下,正五角星度數180/5=36°)
t.end_fill() #填充完成

想學畫畫?python滿足你!

繪製櫻花樹

importturtle asT
importrandom
importtime

# 畫櫻花的軀幹(60,t)
defTree(branch,t):
time.sleep(0.0005)
ifbranch > 3:
if8<= branch <= 12:
ifrandom.randint(0,2) == 0:
t.color('snow') # 白
else:
t.color('lightcoral') # 淡珊瑚色
t.pensize(branch / 3)
elifbranch < 8:
ifrandom.randint(0,1) == 0:
t.color('snow')
else:
t.color('lightcoral') # 淡珊瑚色
t.pensize(branch / 2)
else:
t.color('sienna') # 赭(zhě)色
t.pensize(branch / 10) # 6
t.forward(branch)
a = 1.5* random.random()
t.right(20* a)
b = 1.5* random.random()
Tree(branch - 10* b,t)
t.left(40* a)
Tree(branch - 10* b,t)
t.right(20* a)
t.up()
t.backward(branch)
t.down()

# 掉落的花瓣
defPetal(m,t):
fori inrange(m):
a = 200- 400* random.random()
b = 10- 20* random.random()
t.up()
t.forward(b)
t.left(90)
t.forward(a)
t.down()
t.color('lightcoral') # 淡珊瑚色
t.circle(1)
t.up()
t.backward(a)
t.right(90)
t.backward(b)

# 繪圖區域
t = T.Turtle()
# 畫布大小
w = T.Screen()
t.hideturtle() # 隱藏畫筆
t.getscreen().tracer(5,0)
w.screensize(bg='wheat') # wheat小麥
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')

# 畫櫻花的軀幹
Tree(60,t)
# 掉落的花瓣
Petal(200,t)
w.exitonclick()

想學畫畫?python滿足你!

更多關於python的文章,歡迎關注python客棧。

想學畫畫?python滿足你!

以上就是想學畫畫?python滿足你!的詳細內容,更多關於python 畫畫的資料請關注我們其它相關文章!