Canvas():創建一個空的畫布,可以使用setBitmap()方法來設置繪製的具體畫布;
Canvas(Bitmap bitmap):以bitmap對象創建一個畫布,則將內容都繪製在bitmap上,bitmap不得爲null;
Canvas(GL gl):在繪製3D效果時使用,與OpenGL有關;
drawColor:設置畫布的背景色;
setBitmap:設置具體的畫布;
clipRect:設置顯示區域,即設置裁剪區;
isOpaque:檢測是否支持透明;
rotate:旋轉畫布;
下面我們就用Canvas來畫一個機器人——android,oh my love!一看就知道,機器人的外形是由矩形/圓/圓弧/線條組成的,因此要知道怎麼用Canvas畫矩形/圓/圓弧和線條。可惜阿,上面幾個方法基本都沒用上。
canvas.drawRect(RectF,Paint)方法用於畫矩形,第一個參數爲圖形顯示區域,第二個參數爲畫筆,設置好圖形顯示區域Rect和畫筆Paint後,即可畫圖;
canvas.drawRoundRect(RectF, float, float, Paint) 方法用於畫圓角矩形,第一個參數爲圖形顯示區域,第二個參數和第三個參數分別是水平圓角半徑和垂直圓角半徑。
canvas.drawLine(startX, startY, stopX, stopY, paint):前四個參數的類型均爲float,最後一個參數類型爲Paint。表示用畫筆paint從點(startX,startY)到點(stopX,stopY)畫一條直線;
canvas.drawArc(oval, startAngle, sweepAngle, useCenter, paint):第一個參數oval爲RectF類型,即圓弧顯示區域,startAngle和sweepAngle均爲float類型,分別表示圓弧起始角度和圓弧度數,3點鐘方向爲0度,useCenter設置是否顯示圓心,boolean類型,paint爲畫筆;
canvas.drawCircle(float,float, float, Paint)方法用於畫圓,前兩個參數代表圓心座標,第三個參數爲圓半徑,第四個參數是畫筆;
清楚這些函數的用法之後,我們是否就噼裏啪啦地敲代碼了呢?別急,我們來搞個設計。既然這些函數都是用來畫圖的,也就是說它們有共性——畫。所有我們應該設計一個接口interface,對於這次任務,只需要一個成員方法就足夠了。對於每一個圖形,是隻用一個方法畫,還是將畫圖封裝成類呢?我建議是封裝成類。因爲說不定你明天就會嫌棄它不會動,想它動起來,或者你過兩天又希望在圖的每個部位加點什麼。所以我將每一個圖形封裝成類,都實現一個名叫drawGraphics的接口。最後,要記得給UI創建一個線程哦。
就這樣我開始動手做了,但是很快就發現問題了。什麼問題?在定位的時候,也就是設置每個圖形的顯示區域時,我自以爲這裏的Rect跟Java的Rectangle是一樣的,但我錯了。原來這廝跟MFC中的RECT結構纔是一家人,害我折騰了許久。
Rect(int left,int top,int right,int bottom)
left
矩形左上角X座標值
top
矩形左上角Y座標值
right
矩形右下角X座標值
bottom
矩形右下角Y座標值
下面借用一張圖說明(忘了哪個博客找來的(*^__^*) 嘻嘻……),如Rect(150, 75, 260, 120) 一目瞭然吧。