想學畫畫?python滿足你!
python中的繪圖工具有不少,比如Matplotlib等等,但這些只能用來畫表格,今天我們來介紹一款可以用來畫畫的庫——turtle。
一、繪圖原理我們通過控制初始位置為(0,0)的海龜進行移動,根據一組函數指令的控制,在平面坐標系中移動,從而在它爬行的路徑上繪制了圖形。
二、開始繪圖turtle是python自帶的庫,我們直接import導入即可
import turtle設置繪圖區域屬性
繪圖區域背景色的設置
turtle.bgcolor(’blue’)
選擇想要的顏色即可
繪圖區域大小設置
turtle.setup(width=200,height=100)
參數:
width, height:
輸入寬和高為整數時, 表示像素;
為小數時, 表示占據電腦屏幕的比例。
畫筆繪制圖形讓我們先簡單的畫一條直線
turtle.forward(100)
forward()是turtle的內置函數,表示從原點向前進多少距離。我們還可以控制畫筆的角度讓他轉彎。與之對應的是backward(),后退多少距離
turtle.backward(100)turtle.left(60)turtle.forward(100)
這里的left()就表示畫筆的轉彎方向和角度了,相應的right則為向右轉。
如圖我們后退了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循環語句如果我們要畫一個正方形按照上邊的方法代碼為
import turtleturtle.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 for times in range(totalTimes): turtle.forward(100) turtle.left(90)
繪制五角星
import turtlet=turtle.Pen() #獲得畫筆t.hideturtle() #隱藏箭頭t.begin_fill() #填充圖形for x in range(1, 6): t.forward(100) t.left(216) #在這里先向右直行,然后左轉216°(左下,正五角星度數180/5=36°)t.end_fill() #填充完成
繪制櫻花樹
import turtle as Timport randomimport time # 畫櫻花的軀干(60,t)def Tree(branch, t): time.sleep(0.0005) if branch > 3: if 8 <= branch <= 12: if random.randint(0, 2) == 0:t.color(’snow’) # 白 else:t.color(’lightcoral’) # 淡珊瑚色 t.pensize(branch / 3) elif branch < 8: if random.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() # 掉落的花瓣def Petal(m, t): for i in range(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 畫畫的資料請關注好吧啦網其它相關文章!
相關文章: