利用Python繪制創(chuàng)意中秋節(jié)月餅
一、效果展示
話不多說先上效果
為了更有意境我加了個完美的背景來襯托出月餅的好看
我的月餅畫的不圓的原因是我故意的,為什么呢?
因為月有陰晴圓缺?。」?!
上面是直接畫的,沒有填充,接下來我們畫一個有填充的。
也可以添加好看的背景噢。
二、程序代碼
代碼將在下面解釋,可以看著代碼對應(yīng)下面的函數(shù)解釋。
第一種:
import turtle import math turtle.title("照徹乾坤,印透山河") turtle.bgpic("yueliang/1.png") p = turtle.Turtle() p.pensize(4) p.speed(3) #做月餅的面 def ellipse(a,b,n=500,c='#CD950C'): p.penup() p.setpos(a,0) color = p.color(c) p.pendown() for i in range(n): radian = 2 * math.pi /n theta = (i+1) * radian next_point = (a * math.cos(theta)),b * math.sin(theta) p.setpos(next_point) ellipse(300,200,c='#CD950C') ellipse(296,196,c='#FFB90F') ellipse(292,192,c='#FFD700') #做月餅的底 turtle.penup() turtle.goto(-10,-300) turtle.color("#CD950C") turtle.pensize(6) turtle.pendown() turtle.circle(430,42)#33 turtle.circle(420,-84)#-60 turtle.goto(-296,-40) turtle.penup() turtle.goto(296,-40) turtle.pendown() turtle.right(54) turtle.forward(151) turtle.penup() turtle.goto(0,0) turtle.pendown() def draw(a1,b1,a2,b2,f='#CD950C'):#邊角的2個點,分別是(a1,b1),(a2,b2) turtle.penup() turtle.goto(a1,b1) turtle.pensize(6) turtle.color(f) turtle.pendown() turtle.goto(a2,b1) turtle.goto(a2,b2) turtle.penup() return() #下面是4個角圖案 draw(260,78,130,170,'#FFD700') draw(250,90,150,160) draw(240,102,172,150) draw(230,114,194,140) draw(-260,-78,-130,-170,'#FFD700') draw(-250,-90,-150,-160) draw(-240,-102,-172,-150) draw(-230,-114,-194,-140) draw(260,-78,130,-170,'#FFD700') draw(250,-90,150,-160) draw(240,-102,172,-150) draw(230,-114,194,-140) draw(-262,78,-130,170,'#FFD700') draw(-250,90,-150,160) draw(-240,102,-172,150) draw(-230,114,-194,140) turtle.penup() turtle.pensize(6) turtle.color("#CD950C") turtle.goto(-270,66) turtle.pendown() turtle.goto(-150,66) turtle.goto(-150,-66) turtle.goto(-270,-66) turtle.goto(-270,-54) turtle.goto(-170,-54) turtle.goto(-170,54) turtle.goto(-276,54) turtle.goto(-276,42) turtle.goto(-190,42) turtle.goto(-190,-42) turtle.goto(-276,-42) turtle.goto(-276,-30) turtle.goto(-210,-30) turtle.goto(-210,30) turtle.goto(-279,30) turtle.goto(-279,18) turtle.goto(-230,18) turtle.goto(-230,-18) turtle.goto(-282,-18) turtle.goto(-282,-2) turtle.goto(-258,-2) turtle.penup() turtle.penup() turtle.goto(-128,-2) turtle.pendown() turtle.color("#FFD700") turtle.pensize(2) turtle.goto(126,-2) turtle.penup() turtle.penup() turtle.pensize(6) turtle.color("#CD950C") turtle.goto(270,66) turtle.pendown() turtle.goto(150,66) turtle.goto(150,-66) turtle.goto(270,-66) turtle.goto(270,-54) turtle.goto(170,-54) turtle.goto(170,54) turtle.goto(276,54) turtle.goto(276,42) turtle.goto(190,42) turtle.goto(190,-42) turtle.goto(276,-42) turtle.goto(276,-30) turtle.goto(210,-30) turtle.goto(210,30) turtle.goto(279,30) turtle.goto(279,18) turtle.goto(230,18) turtle.goto(230,-18) turtle.goto(282,-18) turtle.goto(282,-2) turtle.goto(258,-2) turtle.penup() turtle.penup() turtle.pensize(6) turtle.color("#CD950C") turtle.goto(-110,174) turtle.pendown() turtle.goto(-110,90) turtle.goto(110,90) turtle.goto(110,174) turtle.goto(90,174) turtle.goto(90,102) turtle.goto(-90,102) turtle.goto(-90,176) turtle.goto(-70,176) turtle.goto(-70,114) turtle.goto(70,114) turtle.goto(70,176) turtle.goto(50,176) turtle.goto(50,126) turtle.goto(-50,126) turtle.goto(-50,180) turtle.goto(-30,180) turtle.goto(-30,138) turtle.goto(30,138) turtle.goto(30,182) turtle.goto(10,182) turtle.goto(-10,182) turtle.goto(-10,150) turtle.goto(10,150) turtle.goto(10,166) turtle.penup() turtle.penup() turtle.goto(10,76) turtle.pendown() turtle.pensize(2) turtle.color("#FFD700") turtle.goto(10,-75) turtle.penup() turtle.penup() turtle.pensize(6) turtle.color("#CD950C") turtle.goto(-110,-174) turtle.pendown() turtle.goto(-110,-90) turtle.goto(110,-90) turtle.goto(110,-174) turtle.goto(90,-174) turtle.goto(90,-102) turtle.goto(-90,-102) turtle.goto(-90,-176) turtle.goto(-70,-176) turtle.goto(-70,-114) turtle.goto(70,-114) turtle.goto(70,-176) turtle.goto(50,-176) turtle.goto(50,-126) turtle.goto(-50,-126) turtle.goto(-50,-180) turtle.goto(-30,-180) turtle.goto(-30,-138) turtle.goto(30,-138) turtle.goto(30,-182) turtle.goto(10,-182) turtle.goto(-10,-182) turtle.goto(-10,-150) turtle.goto(10,-150) turtle.goto(10,-166) turtle.penup() #中間金色邊框 turtle.penup() turtle.goto(-130,170) draw(-130,78,130,-78,'#FFD700') draw(130,-78,-130,78,'#FFD700') turtle.penup() #中間金色字體 turtle.penup() turtle.speed(1) turtle.penup() turtle.goto(-100,0) turtle.pendown() turtle.color('#D2691E') turtle.write("花",font=("隸書",60,"bold")) turtle.penup() turtle.goto(30,0) turtle.pendown() turtle.write("好",font=("隸書",60,"bold")) turtle.penup() turtle.goto(-100,-80) turtle.pendown() turtle.write("月",font=("隸書",60,"bold")) turtle.penup() turtle.goto(30,-80) turtle.pendown() turtle.write("圓",font=("隸書",60,"bold")) turtle.penup() p.hideturtle() turtle.mainloop()
第二種:
import turtle turtle.title("祝大家中秋節(jié)快樂!") # turtle.bgpic("hua/1.png") turtle.speed(100) turtle.color("#F5E16F") for i in range(20): # 順時針移動18度 turtle.right(18) turtle.begin_fill() # 向前移動的距離 turtle.forward(220) # 畫半徑為 40 的半圓 turtle.circle(40, 180) # 畫完半圓之后回到(0,0) turtle.goto(0, 0) turtle.right(360) turtle.end_fill() # 設(shè)置畫筆粗細(xì) turtle.pensize(20) # 填充顏色(外部、內(nèi)部) turtle.color("#F5E16F", "#FF9933") turtle.goto(0, -200) # 準(zhǔn)備開始填充 turtle.begin_fill() turtle.circle(200) # 填充結(jié)束 turtle.end_fill() turtle.right(360) turtle.color('#F5E16F') turtle.goto(0, -180) for i in range(12): turtle.begin_fill() turtle.circle(60, 120) turtle.left(180) turtle.circle(60, 120) turtle.end_fill() turtle.penup() turtle.goto(-80,-40) turtle.pendown() turtle.color("#F5E16F") turtle.write("團(tuán)圓", font=("隸書", 60, "bold")) turtle.mainloop()
三、素材背景
將圖片放在文件夾中
本文將1.png放在yueliang文件夾中
1.png
2.png
3.png
更多的背景可以在網(wǎng)上搜索獲得。
四、原理解釋
1、概念
turtle(海龜)是Python重要的標(biāo)準(zhǔn)庫之一,它能夠進(jìn)行基本的圖形繪制,其概念誕生于1969年。turtle是最有價值的程序設(shè)計入門實踐庫,它是程序設(shè)計入門層面最常用的基本繪圖庫。
turtle的繪圖原理:
有一只海龜處于畫布正中心,由程序控制在畫布上游走;
海龜走過的軌跡形成了繪制的圖形
海龜由程序控制,可改變其大小,顏色等
使用 import 保留字對 turtle 庫的引用以下方式:
import turtle
2、函數(shù)
窗體函數(shù)
turtle.setup()函數(shù)與窗體有關(guān),定義如下:
turtle.setup(width,height,startx,starty)
作用:設(shè)置主窗體的大小和位置
參數(shù):
- width:窗口寬度。如果值是整數(shù),表示像素值;如果值是小數(shù),表示窗口寬度與屏幕的比例
- height:窗口高度。如果值是整數(shù),表示像素值;如果值是小數(shù),表示窗口高度與屏幕的比例
- startx:窗口左側(cè)與屏幕右側(cè)的像素距離。如果值是None,窗口位于屏幕水平正中央。
畫筆狀態(tài)函數(shù)
函數(shù) | 描述 |
pendown( ) | 放下畫筆 |
penup() | 提起畫筆 |
pensize(width) | 設(shè)置畫筆線條的粗細(xì)為指定大小 |
pencolor() | 設(shè)置畫筆的顏色 |
color( a,b) | 同時設(shè)置畫筆和填充顏色 |
begin_fill() | 填充恩形前,調(diào)用該方法 |
end_fill( ) | 填充圖形結(jié)束 |
filling() | 返回填充的狀態(tài),True為填充。False為未填充 |
clear( ) | 清空當(dāng)前窗口,但不改變當(dāng)前畫筆的位置 |
reset() | 清空當(dāng)前窗口,并重置位置等狀態(tài)為默認(rèn)值 |
screensize( ) | 設(shè)置畫布窗口的寬度、高度和背昱顏色 |
hideturtle() | 隱藏畫筆的turtle形狀 |
showturtle( ) | 顯示畫筆的turtle形狀 |
isvisible( ) | 如果turtle可見,則返回True |
write(str,font=None) | 輸出font字體的字符串 |
畫筆運動函數(shù)
函數(shù) | 描述 |
fd(distance) | 沿著當(dāng)前方向前進(jìn)指定距離 |
bk(distance) | 沿著當(dāng)前相反方向后退指定距離 |
right(angle) | 向右旋轉(zhuǎn)angle角度 |
left(angle) | 向左旋轉(zhuǎn)angle角度 |
goto(x,y) | 移動到絕對坐標(biāo)xy)處 |
sex(x) | 修改畫筆的橫坐標(biāo)到次,縱坐標(biāo)不變 |
sety(y) | 修改畫筆的縱坐標(biāo)到y(tǒng),橫坐標(biāo)不變 |
seth(angle) | 設(shè)置當(dāng)前朝向為angle角度 |
home() | 設(shè)置當(dāng)前畫筆位置為原點,朝向東 |
circle(radius,e) | 繪制一個指定半徑r和角度e的圓或新形 |
dot(r.color) | 繪制一個指定半徑r和預(yù)色color的圓點 |
undo( ) | 撤銷畫筆的最后一步動作 |
speed() | 設(shè)置畫筆的繪制速度,參數(shù)為0~10之間 |
顏色代碼大全
可以選擇自己喜歡的顏色畫。
以上就是利用Python繪制創(chuàng)意中秋節(jié)月餅的詳細(xì)內(nèi)容,更多關(guān)于Python月餅的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python中字符串列表的相互轉(zhuǎn)換實際應(yīng)用場景
在Python編程中,經(jīng)常會遇到需要將字符串列表相互轉(zhuǎn)換的情況,這涉及到將逗號分隔的字符串轉(zhuǎn)換為列表,或者將列表中的元素連接成一個字符串,本文將深入討論這些情景,并提供豐富的示例代碼,幫助讀者更全面地理解字符串列表的轉(zhuǎn)換操作2023-12-12MNIST數(shù)據(jù)集轉(zhuǎn)化為二維圖片的實現(xiàn)示例
這篇文章主要介紹了MNIST數(shù)據(jù)集轉(zhuǎn)化為二維圖片的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01Python實現(xiàn)統(tǒng)計英文單詞個數(shù)及字符串分割代碼
這篇文章主要介紹了Python實現(xiàn)統(tǒng)計英文單詞個數(shù)及字符串分割方法,本文分別給出代碼實例,需要的朋友可以參考下2015-05-05Windows 安裝 Anaconda3+PyCharm的方法步驟
這篇文章主要介紹了Windows 安裝 Anaconda3+PyCharm的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06Python實現(xiàn)矩陣相乘的三種方法小結(jié)
今天小編就為大家分享一篇Python實現(xiàn)矩陣相乘的三種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07python內(nèi)置模塊collections知識點總結(jié)
這篇文章主要介紹了python內(nèi)置模塊collections知識點總結(jié),有興趣的朋友們學(xué)習(xí)下。2019-12-12