在最近的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);