CANVAS的使用詳解.doc

CANVAS的使用詳解.doc

ID:20482708

大?。?31.00 KB

頁數(shù):9頁

時(shí)間:2018-10-10

CANVAS的使用詳解.doc_第1頁
CANVAS的使用詳解.doc_第2頁
CANVAS的使用詳解.doc_第3頁
CANVAS的使用詳解.doc_第4頁
CANVAS的使用詳解.doc_第5頁
資源描述:

《CANVAS的使用詳解.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、CANVAS的使用詳解由于在網(wǎng)絡(luò)上找到關(guān)于Canvas的使用都比較抽象,也許是我的邏輯思維不太好吧,總是感覺理解起來比較困難,尤其是對(duì)save()和restore()方法的使用。本篇文章的內(nèi)容就是對(duì)Canvas的使用進(jìn)行一下總結(jié),包括它的兩種不同的使用情節(jié)和它的一些方法進(jìn)行一下說明。?1?Bitmap,可以來自資源/文件,也可以在程序中創(chuàng)建,實(shí)際上的功能相當(dāng)于圖片的存儲(chǔ)空間;2?Canvas,緊密與Bitmap聯(lián)系,把Bitmap比喻內(nèi)容的話,那么Canvas就是提供了眾多方法操作Bitamp的平臺(tái);3?Paint,與Canvas緊密聯(lián)系,是"畫板

2、"上的筆刷工具,也用于設(shè)置View控件上的樣式;4?Drawable,如果說前三者是看不見地在內(nèi)存中畫圖(虛擬的),那么Drawable就是把前三者繪圖結(jié)果表現(xiàn)出來的接口(真實(shí)的)。Drawable多個(gè)子類,例如:位圖(BitmapDrawable)、圖形(ShapeDrawable)、圖層(LayerDrawable)等。?我們打個(gè)簡(jiǎn)單的比方吧:Paint就是畫筆Bitmap就是畫布Canvas就是畫家?于是,畫家可以通過畫筆可以在畫布上進(jìn)行任何的畫畫。?Canvas的兩種使用情形,從Canvas對(duì)象的獲得角度分析:?1、自定義View和自定義S

3、urfaceView中獲得Canvas對(duì)象由于自定義View和SurfaceView在顯示界面中已經(jīng)獲得了顯示區(qū)域,canvas對(duì)象只不過是在其顯示(繪畫)區(qū)域進(jìn)行界面布局的設(shè)計(jì),當(dāng)操作完畢后,系統(tǒng)會(huì)顯示canvas的操作結(jié)果。?自定義View的繪圖方法為:1.//存在canvas對(duì)象,即存在默認(rèn)的顯示區(qū)域2.@Override3.publicvoid?draw(Canvascanvas){4.//canvas繪圖5.}SurfaceView的繪圖方法為,例如:1.SurfaceViewsurfaceView=?new?MySurfaceView(

4、);?//創(chuàng)建一個(gè)Surface對(duì)象1.SurfaceHoldersurfaceHolder=surfaceView.getHolder();?//獲得SurfaceHolder對(duì)象2.Canvascanvas=surfaceHolder.lockCanvas();?//獲得canvas對(duì)象3.//進(jìn)行繪圖操作4.surfaceHolder.unlockCanvasAndPost(canvas);?//釋放canvas鎖,并且顯示視圖2、?在其他情形下,我們需要通過代碼創(chuàng)建一個(gè)Canvas對(duì)象,并且在繪畫成功后,將該畫圖區(qū)域轉(zhuǎn)換為Drawable圖

5、片或者通過setBitmap(bitmap)顯現(xiàn)出來。一般步驟為:1.//創(chuàng)建一個(gè)的Bitmap對(duì)象2.3.Bitmapbitmap=Bitmap.createBitmap(200,?100,Config.ARGB_8888);4.//創(chuàng)建一個(gè)canvas對(duì)象,并且開始繪圖5.Canvascanvas=?new?Canvas(bitmap);6.7.ImageViewimgView=?new?ImageView(this);?//或者其他可以設(shè)置背景圖片的View控件8.9.10.//為ImageView設(shè)置圖像11.//將Bitmap對(duì)象轉(zhuǎn)換為D

6、rawable圖像資12.Drawabledrawable=?new?BitmapDrawable(bitmap);13.imgView.setBackgroundDrawable(drawable);14.15.16.或者簡(jiǎn)單點(diǎn):imgView.setImageBitmap(bitmap);這兩種方式都可以顯示我們的繪圖。Canvas方法分析:?clipXXX()方法族說明:在當(dāng)前的畫圖區(qū)域裁剪(clip)出一個(gè)新的畫圖區(qū)域,這個(gè)畫圖區(qū)域就是canvas對(duì)象的當(dāng)前畫圖區(qū)域了。例如:clipRect(newRect()),那么該矩形區(qū)域就是canv

7、as的當(dāng)前畫圖區(qū)域了。publicint?save()說明:保存已經(jīng)由canvas繪畫出來的東西,在save()和restore()方法之間的操作不對(duì)它們【以前繪制好的,即save保存的】造成影響,例如旋轉(zhuǎn)(roate)等。而且對(duì)canvas的操作(roate和translate)都是臨時(shí)的,restore()后不再存在。publicvoidrestore()說明:復(fù)原sava()方法之前保存的東西資源。drawXXX()方法族說明:以一定的坐標(biāo)值在當(dāng)前畫圖區(qū)域畫圖。注意:圖層會(huì)疊加,即后面繪畫的圖層會(huì)覆蓋前面繪畫的圖層。?需要注意的方法是:pub

8、licvoiddrawRect(floatleft,floattop,floatright,floatbottom,Pai

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。