編程學(xué)習(xí)之創(chuàng)建畫布_第1頁
編程學(xué)習(xí)之創(chuàng)建畫布_第2頁
編程學(xué)習(xí)之創(chuàng)建畫布_第3頁
編程學(xué)習(xí)之創(chuàng)建畫布_第4頁
編程學(xué)習(xí)之創(chuàng)建畫布_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1.2.7Py編程學(xué)習(xí)之創(chuàng)建畫布大家都覺得之前那些都很乏味吧?確實,那些缺少了多變的色彩與形式!誰人不想生活豐富多彩呢?還記得嗎,appuifw這個模塊可以為我們提供三種基本的界面,今天終于等來了畫布界面,開始了一片多姿多彩的新天地。好的,就先讓我們先學(xué)著去開辟自己的第一片天地-創(chuàng)建一塊畫布!有了畫布,才能繪出精彩嘛!來吧,讓我們看一段簡單的代碼!#代碼開始#import appuifwimport graphicsappuifw.app.screen=largeappuifw.app.body=canvas=appuifw.Canvas()canvas.clear(0xff00ee)#代碼結(jié)

2、束#講解:如果你在之前的章節(jié)中顯示出過人的天賦,那么這個是無需多解釋的!然而我還是要解釋清楚,因為這是大家學(xué)習(xí),而不是個人學(xué)習(xí)!廢話挺多的哦,sorry!呵呵!appuifw中的畫布界面需要graphics模塊的輔助,即畫布界面依賴于graphics模塊才得以顯示,graphics這個模塊是專門處理有關(guān)圖像方面的工作的,以后我會介紹的!所以一開始我們就引入了兩個模塊:appuifw和graphics!接著:appuifw.app.screen=large 這個很早就講解過了,是設(shè)定屏幕大小的,這里設(shè)為large(大屏)!再接著:appuifw.app.body=canvas=appuifw.C

3、anvas() 這句設(shè)定了程序的主體,為畫布界面(canvas翻譯為中文就是“畫布”的意思),中間插入了一個canvas,是用來描述畫布用的。如果你不打算描述畫布,那就直接寫成:appuifw.app.body=appuifw.Canvas() 并且去掉后面剩下的內(nèi)容!但這樣系統(tǒng)會使用缺省值(即默認值),默認畫布的顏色為白色!這樣多單調(diào)啊,所以我選擇了描述畫布:canvas.clear(0xff00ee) 這句代碼使畫布的顏色變成了如截圖所示的顏色!其中0xff00ee為顏色代碼!clear翻譯為中文是“清除”的意思!整句代碼用Py語言翻譯的意思是:用0xff00ee所代表的顏色去清除畫布!你

4、可以想象得出,那樣整張畫布的顏色不就變成了0xff00ee所代表的顏色了嗎?在這里著重說一下0xff00ee這種格式的顏色代碼!大家知道,背投電視機屏幕上的各種不同的色彩都是由紅、綠、藍這三種顏色混合出來的!這里的原理也一樣,0xff00ee中的0x之后的數(shù)字或英文字母就是顏色代碼的決定部分!兩個f代表紅色色深,兩個0代表綠色色深,兩個e代表藍色色深!字母可以從a到f中去取(即a,b,c,d,e,f),ff是最深的色,數(shù)字可以任意取,即09!總的來說,0x之后的6位中的每一位可以從af和09任意選擇搭配!另外還有一種有效的顏色表示方法,還記得我之前制作的那個顏色代碼查看器嗎?在使用方法里我告訴

5、大家記下三組數(shù)字,在這里我要講的就是由三組數(shù)字組成的顏色代碼!舉個例子(128,200,238)。注意括號里面的三個數(shù)字就行了,每個數(shù)字可以從0255中去取,在這里128代表紅色色深,200代表綠色色深,238代表藍色色深!最深色為255!如果是黑色(0,0,0)可以略寫為0!這樣你就可以按照這個原理去搭配你要的顏色代碼!下面給出幾種有效的顏色代碼(具體顏色我就不清楚咯,亂搭配的!):0xe2d4f80x0xabcdef0xff00aa(12,61,198)無效的顏色代碼表示:0wff00ee不是以0x開頭0xff00eg字母g超范圍0xff00eef多了最后一位f,0x后只能有6位0xff0

6、0*e不能含有符號(-1,128,280)#-1和280都超范圍了(0255)(12,e*,64)不能用字母或符號代替數(shù)字(12,128,280,46)很明顯,多了一組數(shù)字(12,128)少了一組數(shù)字結(jié)合本節(jié)例子使用示例:canvas.clear(0x0f0e0f)canvas.clear(128,128,128)截圖#隨緣情戀#供麥友學(xué)習(xí)之用import appuifwimport graphicsappuifw.app.screen=largeappuifw.app.body=canvas=appuifw.Canvas()canvas.clear(0xff00ee)1.2.8Py編程學(xué)習(xí)之

7、圖形處理上一節(jié)我們學(xué)習(xí)了如何去創(chuàng)建一塊畫布!畫布本來的作用就是讓我們在上面去描繪我們想要的圖像的,所以我們這一節(jié)就來學(xué)習(xí)在畫布上面處理圖像的技巧!示例代碼有點長(建議麥友在查看時采用全文查看的方式瀏覽),但原理絕對是簡單的,有很多代碼句是在重復(fù)著一個類似的方法,所以請給點耐心,別讓表面的假像迷惑了!好了,代碼開始了哦!#代碼開始#import appuifwimport graphics#引入所需模塊def m(x):return x.decode(utf-8)#定義中文編碼方式appuifw.app.screen=large#設(shè)定屏幕大小appuifw.app.body=canvas=app

8、uifw.Canvas()#設(shè)定程序界面主體img=graphics.Image.new(176,208)#在畫布上重新繪制一張大小為176*208的圖像img.clear(0)#用黑色清除上述新圖像img.text(45,20),m(隨緣情戀),0x0000ff,uLatinBold12)#寫字img.point(15,15),0xff0000,width=30,fill=0xff0000)#畫圓img.polygon(10,160,10,100,50,130),0x,width=0.5,fill=0xff00ee)#畫三角形img.rectangle(5,40,50,80),0x,widt

9、h=0.6,fill=0xffff00)#畫矩形img.line(60,160,60,60,160,10),0xaa00ee,width=5)#畫線段img.ellipse(70,85,100,145),0xffff00,width=2,fill=0x3ff3e9)畫橢圓img.pieslice(110,50,150,120),0,1.9,0xee0f0f,width=1,fill=0x)#畫扇形img.arc(110,130,150,200),-0.5,2.9,0x,width=2)#畫弧線def redraw(rect):+canvas.blit(IMG)#將上面畫好的圖復(fù)制到畫布上面re

10、draw()#讓系統(tǒng)不停地重畫#代碼結(jié)束#講解:引入所需模塊,定義中文編碼方式,設(shè)置程序界面主體后,就開始了繪圖工作!先是:img=graphics.Image.new(176,208) 如注釋,這個方法是在畫布上重新繪制一張大小為176*208的圖像,當(dāng)然,你也可以畫其它大小的圖片,我的N70屏幕大小是176*208,我想畫全屏,所以選擇了176*208!新畫好這張圖后,就將其等價于img(等價于其他你喜歡的名字也無所謂),在下面你看到的很多img,指的就是這一張176*208大小的圖片。接著:img.clear(0) 我用黑色抹除了上述新圖像(其實就是將上面新建的圖片擦黑,0是黑色的代碼)

11、接著:img.text(45,20),m(隨緣情戀),0x0000ff,uLatinBold12) 這句代碼表示在新圖上寫字。先來介紹一下在Py編程中的坐標(biāo)表示!學(xué)過數(shù)學(xué)中的函數(shù)的人都知道,函數(shù)圖像是有原點的,py中的坐標(biāo)原點(0,0)是定義在屏幕的左上角的,向右為橫坐標(biāo),依次遞增,向下為縱坐標(biāo),依次遞增!N70屏幕大小是176*208,那么屏幕右下角的坐標(biāo)表示就是(176,208)。清楚了這個后,再看回頭!img.text()的意思是在img這張圖上寫字,括號里的是相應(yīng)的參數(shù)!有哪些參數(shù)呢?看好了:img.text(文字放置的坐標(biāo),文字內(nèi)容,顏色,所用字體)參考例碼,一個個參數(shù)對照起來怎么用

12、!同樣地,除了寫文字,還有:畫圓:img.point()畫三角形:img.polygon()畫矩形:img.rectangle()畫線段:img.line()畫橢圓:img.ellipse()畫扇形:img.pieslice()畫弧線:img.arc()那么這些他們各自都有些什么參數(shù)呢?下面是使用格式及方法:寫字:img.text(文字坐標(biāo),文字內(nèi)容,顏色,字體)使用注意:1、文字位置只需給出一個始坐標(biāo)。2、文字要定義好編碼方式。3、一定要為文字選好字體,否則只會顯示口口。畫圓:img.point(圓心坐標(biāo),邊框顏色,直徑,填充顏色)使用注意:1、可忽略填充顏色(即不進行填充)!畫三角形:im

13、g.polygon(三個坐標(biāo),顏色,邊框粗細,填充顏色)使用注意:1、必需給出三個坐標(biāo),如(10,60,20,2,80,100),從左向右,每兩個為一組,三角形有三個頂點嘛!2、可忽略填充顏色!畫矩形:img.rectangle(坐標(biāo),邊框顏色,邊框粗細,填充顏色)使用注意:1、坐標(biāo)要給出兩組,如(10,20,50,60),從左向右,每兩個為一組!分別表示矩形左上角坐標(biāo),矩形右下角坐標(biāo)。2、可忽略填充顏色!畫線段:img.line(坐標(biāo),顏色,線段粗細)使用注意:1、必需給出至少兩組坐標(biāo),分別表示線段起點坐標(biāo),終點坐標(biāo)!如果給出兩組以上的坐標(biāo),就畫折線!畫橢圓:img.ellipse(坐標(biāo),邊

14、框顏色,邊框粗細,填充顏色)使用注意:1、必需給出兩組坐標(biāo),分別表示橢圓外切矩形左上角坐標(biāo)及右下角坐標(biāo)!2、可忽略填充顏色!畫扇形:img.pieslice(坐標(biāo),開始方向角,結(jié)束方向角,邊框顏色,邊框粗細,填充顏色)使用注意:1、必需給出兩組坐標(biāo),這兩個坐標(biāo)其實是用來畫出一個橢圓的,扇形就從這個橢圓中分割出來的!2、談到方向角,學(xué)過高中數(shù)學(xué)單位圓中的弧度角的人會很容易理解。沒學(xué)過的呢?我給出方向角范圍,你們可以改變方向角去體驗一下用法!0-水平向右,/2-垂直向下,-水平向左,-/2-垂直向下!選擇方向角時就從-/2到3/2取好了,其中約等于3.14!2、填充顏色可忽略!畫弧線:img.ar

15、c(坐標(biāo),開始方向角,結(jié)束方向角,弧線顏色,弧線粗細)使用注意:1、坐標(biāo)定義與畫扇形的一樣,弧線是從一個橢圓的邊框中去截取的!上面只是構(gòu)建了一幅畫的內(nèi)容了而已,但他還不能在新建的img上顯示,所以緊接著定義了一個函數(shù),其主塊內(nèi)容是:canvas.blit(IMG) 在之前的創(chuàng)建畫布章節(jié)中,我們知道appuifw.app.body=canvas=appuifw.Canvas()中的canvas是用來描述畫布的!blit()這個方法是將一張圖復(fù)制到畫布上!blit(IMG)就是將img這幅圖復(fù)制到畫布上!為什么def redraw(rect) 括號中多了rect?不是很懂,照做!定義了這個函數(shù)后,

16、如果只是redraw(),那么系統(tǒng)只會復(fù)制一次img到畫布上!想要他不斷地復(fù)制,就redraw()!正如你所見,這篇貼夠長的了!停!不懂就留言吧!本節(jié)示例代碼下載#隨緣情戀#供麥友學(xué)習(xí)之用import appuifwimport graphicsdef m(x):return x.decode(utf-8)appuifw.app.screen=largeappuifw.app.body=canvas=appuifw.Canvas()img=graphics.Image.new(176,208)img.clear(0)img.text(45,20),m(隨緣情戀),0x0000ff,uLatin

17、Bold12)img.point(15,15),0xff0000,width=30,fill=0xff0000)img.polygon(10,160,10,100,50,130),0x,width=0.5,fill=0xff00ee)img.rectangle(5,40,50,80),0x,width=0.6,fill=0xffff00)img.line(60,160,60,60,160,10),0xaa00ee,width=5)img.ellipse(70,85,100,145),0xffff00,width=2,fill=0x3ff3e9)img.pieslice(110,50,150,1

18、20),0,1.9,0xee0f0f,width=1,fill=0x)img.arc(110,130,150,200),-0.5,2.9,0x,width=2)def redraw(rect): canvas.blit(img)redraw()1.2.9Py編程學(xué)習(xí)之引用圖片上一節(jié)我們是在一張自己定義好了的新圖上去處理圖形,如畫圓、畫線!但那樣看起來還是單調(diào)吧!能不能用一張美圖代替那張新建的176*208的圖呢?那樣背景就會豐富多彩一點啊!當(dāng)然可以,py平臺的功能還是很強大的!來吧!import appuifwimport graphicsimg1=graphics.Image.open(e:

19、rar.gif)#打開圖片,下同img2=graphics.Image.open(e:Nokia.gif)img3=graphics.Image.open(e:Q.gif)img4=graphics.Image.open(e:QQLIVE.gif)appuifw.app.screen=largeappuifw.app.body=canvas=appuifw.Canvas()canvas.clear(0)def redraw(rect):+canvas.blit(IMG1,target=(5,8)+canvas.blit(IMG2,target=(55,108)+canvas.blit(IMG3

20、,target=(100,8)+canvas.blit(IMG4,target=(5,52)redraw()#代碼結(jié)束#講解:主要講解兩種代碼句!其他的都講過了的!每種挑其中一個例子來講,其他類同!第一種:img1=graphics.Image.open(e:rar.gif) 這個與上一節(jié)新建一張新圖片的方式有點類似, 但這里的方法是打開一張已存的圖片,具體格式是:圖片名=graphics.Image.open(圖片路徑),其中open就是“打開”的意思!完整的翻譯過來就是:利用graphics模塊中的Image函數(shù)中的open方法來打開一張已給路徑的圖片! 當(dāng)然圖片必需存在!打開了之后,按照上一節(jié)的方法,我們必需把他不斷地在畫布上重畫!所以我們還是要回到那句:canvas.blit(IMG1,target=(5,8) 與上一節(jié)不同的是,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論