随笔 - 632  文章 - 17  评论 - 54  阅读 - 93万

Android给拼接好的Bitmap加上个性化边框

在上一节中将到将若干张图片拼接成为一张图片。但是这种简单的操作往往不能满足实际的需求,有时我们会需要给图片添加上个性化的边框,来更好的展示图片。

下面就讲一下在图片拼接后如何给bitmap添加边框。

操作步骤和上一篇差不多,不过区别是上章操作的是bitmap,而这一章通过操作canvas来间接操作bitmap。

效果图如下:

操作步骤如下:

  1.获取Canvas裁剪界限:

Rect rect = canvas.getClipBounds();

  2.创建画笔,设置画笔颜色和画笔样式,并设置边框宽度

Paint paint = new Paint();
//设置边框颜色 paint.setColor(Color.GREEN); paint.setStyle(Paint.Style.STROKE); //设置边框宽度 paint.setStrokeWidth(20);

  3.绘制Canvas区域大小的边框

canvas.drawRect(rect, paint);

  4.结束。呵呵,

 

具体的代码如下:

1.设置Bitmap边框的方法

复制代码
/**
     * 给bitmap设置边框
     * @param canvas
     */
    private void setBitmapBorder(Canvas canvas){
        Rect rect = canvas.getClipBounds();
        Paint paint = new Paint();
        //设置边框颜色
        paint.setColor(Color.GREEN);
        paint.setStyle(Paint.Style.STROKE);
        //设置边框宽度
        paint.setStrokeWidth(20);
        canvas.drawRect(rect, paint);
    }
复制代码

2.调用该方法绘制边框

  

复制代码
/**
     * 拼接图片
     * @param bit1
     * @param bit2
     * @return 返回拼接后的Bitmap
     */
    private Bitmap 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 = new Canvas(bitmap);
        canvas.drawBitmap(bit1, 0, 0, null);
        canvas.drawBitmap(bit2, 0, bit1.getHeight(), null);
        //将canvas传递进去并设置其边框
        setBitmapBorder(canvas);
        return bitmap;
    }
复制代码

注意:setBitmapBorder(Canvas canvs)方法传递的这个canvas必须是你创建内存区域的那个canvas也就是Canvas canvas = new Canvas(bitmap);.只有传入这个canvas才会绘制bitmap的边框,如果传递的是onDraw方法的canvas则绘制的是整个View的边框。

posted on   飘杨......  阅读(6848)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示