想學畫畫?python滿足你!
阿新 • • 發佈:2020-12-28
python中的繪圖工具有不少,比如Matplotlib等等,但這些只能用來畫表格,今天我們來介紹一款可以用來畫畫的庫——turtle。
一、繪圖原理
我們通過控制初始位置為(0,0)的海龜進行移動,根據一組函式指令的控制,在平面座標系中移動,從而在它爬行的路徑上繪製了圖形。
二、開始繪圖
turtle是python自帶的庫,我們直接import匯入即可
importturtle
設定繪圖區域屬性
繪圖區域背景色的設定
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迴圈語句
如果我們要畫一個正方形按照上邊的方法程式碼為
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)
四、簡單示例
繪製五角星
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() #填充完成
繪製櫻花樹
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 畫畫的資料請關注我們其它相關文章!