開始工作好幾個星期了,一直想說要把學到的東西寫下來,
做一個學習筆記,也順便釐清自己的思緒,不過人就是懶,

現在開始寫第一篇,依主題可能會再回過頭來修改,也不知道會持續寫多久,反正就是個開端

現在要講的 Canvas,翻譯叫"畫布"
在畫點 畫線 畫圓乃至畫圖,都需要用到這個api
http://developer.android.com/reference/android/graphics/Canvas.html

講些比較實際的應用
小畫家、建立自訂元件.....等等,反正牽涉到畫像的,都可以看看這個canvas是否可以應用。

說明一下用法:

宣告

private Canvas mCanvas;

mCanvas = new Canvas(bitmap);

其中 bitmap 即是我們要畫上去的目標,必須要是可畫(mutable)的 bitmap,

先宣告畫布,它是"透明還未上色的"

很簡單的只要

bitmap = Bitmap.createBitmap(getWidth(),getHeight(), Bitmap.Config.ARGB_8888);
然後就可以將其做為參數傳給canvas做instance,則此canvas做繪畫的動作即是畫在bitmap上,

若要產生一個白色的畫布,可以這樣宣告

bitmap = CreateBitmap(Color.WHITE, getWidth(), getHeight()).copy(Bitmap.Config.ARGB_8888, true);

public Bitmap CreateBitmap(int color, int width, int height) {
int[] rgb = new int[width * height];

for (int i = 0; i < rgb.length; i++) {
rgb[i] = color;
}

return Bitmap.createBitmap(rgb, width, height, Config.ARGB_8888);
}

這邊return 的 Bitmap.createBitmap(rgb, width, height, Config.ARGB_8888); 是immutalbe的,再用copy 到bitmap上,並設第二個參數為 ture 來遠成mutable 。

經過以上的步驟,可以產生各種顏色的畫布。

 

 

canvas 提供很多工具,這邊介紹一下我有用到的

mCanvas.drawPath(path, paint);
用 paint 來畫path,

其中paint 是畫筆,可以去設定各種type像是筆觸 顏色等等,http://developer.android.com/reference/android/graphics/Paint.html
path是路徑,起頭 mPath.moveTo(ax, ay) ;中途 mPath.lineTo(ax, ay); 
最後線段結束要記得 mPath.reset(); 以避免下次畫線仍接續上次的線。
這在作小畫家之類的程式會用到

 

 

mCanvas.drawBitmap(bmp, x, y, paint);

在畫布上的(x,y)位置畫上bmp。

 

mCanvas.drawRect(float left, float top, float right, float bottom, Paint paint)

在範圍內畫方型。

 

.....

先寫這樣好了星期日總是比較容易累

arrow
arrow
    全站熱搜

    alansong 發表在 痞客邦 留言(0) 人氣()