開始工作好幾個星期了,一直想說要把學到的東西寫下來,
做一個學習筆記,也順便釐清自己的思緒,不過人就是懶,
現在開始寫第一篇,依主題可能會再回過頭來修改,也不知道會持續寫多久,反正就是個開端
現在要講的 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)
在範圍內畫方型。
.....
先寫這樣好了星期日總是比較容易累
留言列表