Canvas基本使用

2021-07-23 23:04:42 字數 1937 閱讀 6891

canvas的意思是畫布,表現在螢幕上就是一塊區域,我們可以再上面使用各種api繪製我們想要的東西。可以說,canvas貫穿整個2d graphics,android.graphics中的所有類,幾乎都於canvas有直接或間接的聯絡。所以了解canvas是學習2d graphics的基礎。

android官方文件對canvas的簡介很好的介紹了canvas的使用:

the canvas class holds the 「draw」 calls. to draw something, you need 4 basic components: a bitmap to hold the pixels,

a canvas to host the draw calls (writing into the bitmap), a drawing primitive (e.g. rect, path, text, bitmap),

and a paint (to describe the colors and styles for the drawing).

乙個canvas物件有四大基本要素:

1、乙個用來儲存畫素的bitmap

2、乙個canvas在bitmap上進行繪製操作

3、繪製的東西

4、繪製的畫筆paint

canvas物件的獲取方式有三種:

第一種我們通過重寫view.ondraw方法,view中的canvas物件會被當做引數傳遞過來,我們操作這個canvas,效果會直接反應在view中。

第二種就是當你想自己建立乙個canvas物件。從上面的基本要素可以明白,乙個canvas物件一定是結合了乙個bitmap物件的。所以一定要為乙個canvas物件設定乙個bitmap物件。

//得到乙個bitmap物件,當然也可以使用別的方式得到。但是要注意,改bitmap一定要是mutable(異變的)  

bitmap b = bitmap.createbitmap(100,100, bitmap.config.argb_8888);

canvas c = new canvas(b);

/*先new乙個canvas物件,在呼叫setbitmap方法,一樣的效果

* canvas c = new canvas();

* c.setbitmap(b);

*/

第三種方式,是呼叫su***ceholder.lockcanvas(),返回乙個canvas物件。

閃爍是圖形編輯中的乙個常見問題,當進行複雜的繪製操作的時候會導致呈現的影象閃爍或具有其他不可接受的外觀.

雙緩衝的使用解決這些問題.雙緩衝使用記憶體緩衝區來解決由多重繪製操作造成的閃爍問題.

首先在記憶體緩衝區裡完成所有的繪製操作,而不是在螢幕上直接進行繪圖,當所有繪製操作完成後,把記憶體緩衝區完成的影象直接複製到螢幕.因為在螢幕上只執行乙個圖形操作,所以消除了由複雜繪製操作所造成的影象閃爍問題.

在android中實現雙緩衝,可以使用乙個後台畫布backcanvas,先把所有繪製操作都在這個上邊進行,等圖畫好了,然後再把backcanvas拷貝到與螢幕關聯的canvas上去,如下:

bitmap bitmapbase = new bitmap();

canvas backcanvas = new canvas(bitmapbase);

backcanvas.draw()...//畫圖

canvas c = lockcanvas(null);

c.drawbitmap(bitmapbase);//把應經畫好的影象輸出到螢幕上

unlock(c)...

參考:

canvas基本用法

1 開始之前 預設大小 300px 150px2 基本用法 1.canvas元素 2.渲染上下文 var canvas document.getelementbyid tutorial var ctx canvas.getcontext 2d 使用document.getelementbyid 方法...

canvas基本時針程式

canvas時鐘程式終於寫完了,在計算那些角度換算時,說明學好數學真的很重要,沒有良好的邏輯思路理解的有點蛋疼!想當年我數學是那麼溜,現在卻 花了半天吧canvas基本時鐘程式都理解了,並且自己加了乙個小美觀的分鐘點函式。js 如下 created by administrator on 2015 ...

canvas 的基本用法

1.canvas 標籤只有width和height兩個屬性。盡量用width和height屬性為 canvas 明確規定寬高,而不是使用 css,避免影象扭曲。2.當沒有設定寬度和高度的時候,canvas 會初始化寬度為300畫素和高度為150畫素。3.id屬性並不是canvas元素所特有的,但建議...