在上一节中将到将若干张图片拼接成为一张图片。但是这种简单的操作往往不能满足实际的需求,有时我们会需要给图片添加上个性化的边框,来更好的展示图片。
下面就讲一下在图片拼接后如何给bitmap添加边框。
操作步骤和上一篇差不多,不过区别是上章操作的是bitmap,而这一章通过操作canvas来间接操作bitmap。
效果图如下:
操作步骤如下:
1.获取Canvas裁剪界限:
Rect rect = canvas.getClipBounds();
2.创建画笔,设置画笔颜色和画笔样式,并设置边框宽度
Paint paint = newPaint();//设置边框颜色
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.STROKE);//设置边框宽度
paint.setStrokeWidth(20);
3.绘制Canvas区域大小的边框
canvas.drawRect(rect, paint);
4.结束。呵呵,
具体的代码如下:
1.设置Bitmap边框的方法
/*** 给bitmap设置边框
*@paramcanvas*/
private voidsetBitmapBorder(Canvas canvas){
Rect rect=canvas.getClipBounds();
Paint paint= newPaint();//设置边框颜色
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.STROKE);//设置边框宽度
paint.setStrokeWidth(20);
canvas.drawRect(rect, paint);
}
2.调用该方法绘制边框
/*** 拼接图片
*@parambit1
*@parambit2
*@return返回拼接后的Bitmap*/
privateBitmap newBitmap(Bitmap bit1,Bitmap bit2){int width =bit1.getWidth();int height = bit1.getHeight() +bit2.getHeight();//创建一个空的Bitmap(内存区域),宽度等于第一张图片的宽度,高度等于两张图片高度总和
Bitmap bitmap =Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);//将bitmap放置到绘制区域,并将要拼接的图片绘制到指定内存区域
Canvas canvas = newCanvas(bitmap);
canvas.drawBitmap(bit1,0, 0, null);
canvas.drawBitmap(bit2,0, bit1.getHeight(), null);//将canvas传递进去并设置其边框
setBitmapBorder(canvas);returnbitmap;
}
注意:setBitmapBorder(Canvas
canvs)方法传递的这个canvas必须是你创建内存区域的那个canvas也就是Canvas canvas = new
Canvas(bitmap);.只有传入这个canvas才会绘制bitmap的边框,如果传递的是onDraw方法的canvas则绘制的是整个View的边框。
原文:http://www.cnblogs.com/tony-yang-flutter/p/3559866.html