在最近的Android的實驗中用到了繪製圖形,於是簡單的學習了一下利用canvas進行2D圖形的簡單繪製,一下是個人的總結,以便日後翻看。
其中,有三個重要的東西:
Bitmap、Canvas、Paint
以實際生活中的繪畫過程進行類比的話,更容易理解:
1.Bitmap:相當於畫布
其創建有很多種,這裏只說一種很簡單的方式:
Bitmap baseBitmap = Bitmap.createBitmap(x, y, Config.ARGB_8888);
x,y參數分別制訂了該畫布的大小。
2.Canvas:相當於畫家
Canvas canvas = new Canvas(baseBitmap);
畫家手裏需要有畫布
3.paint:相當於畫筆
畫筆可以設置粗細,顏色等屬性
Paint paint = new Paint();
paint.setStrokeWidth(5);
paint.setColor(Color.RED);
4.最後是作畫
canvas.drawXXXX()進行繪製,其提供了各種形狀,圖片的繪製。
下面是圖片的簡單繪製方法:
InputStream is = getResources().openRawResource(R.drawable.map);
Bitmap mBitmap = BitmapFactory.decodeStream(is);
Paint mPaint = new Paint();
canvas.drawBitmap(mBitmap, 0, 0, mPaint);
以下是實例代碼:
//獲取imageview
imView1 =(ImageView) findViewById(R.id.select_picture1);
//按照imageview的大小創建畫布
Bitmap baseBitmap = Bitmap.createBitmap(imView1.getWidth(), imView1.getHeight(), Config.ARGB_8888);
//將背景圖片繪製上去
Canvas canvas = new Canvas(baseBitmap);
canvas.drawColor(Color.WHITE);
InputStream is = getResources().openRawResource(R.drawable.map);
Bitmap mBitmap = BitmapFactory.decodeStream(is);
Paint mPaint = new Paint();
canvas.drawBitmap(mBitmap, 0, 0, mPaint);
//將定位圖標繪製上去
Paint paint = new Paint();
paint.setStrokeWidth(5);
paint.setColor(Color.RED);
InputStream is1 = getResources().openRawResource(R.drawable.mylocation);
Bitmap mBitmap1 = BitmapFactory.decodeStream(is1);
canvas.drawBitmap(mBitmap1, x, y, paint);
// 把圖片展示到ImageView中
imView1.setImageBitmap(baseBitmap);