• 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的边框。

  • 相关阅读:
    SourceTree 3.0.17如何跳过注册进行安装? — git图形化工具(一)
    一键复制功能
    如何适配处理iphoneX底部的横条
    .gitignore文件如何编写?
    Spring事务管理——事务的传播行为
    数据库事务之声明式事务
    JVM中的内存分区简介
    SpringMVC中文件的上传(上传到服务器)和下载问题(二)--------下载
    SpringMVC中文件的上传(上传到服务器)和下载问题(一)--------上传
    HashMap和Hashtable的区别
  • 原文地址:https://www.cnblogs.com/tony-yang-flutter/p/3559866.html
Copyright © 2020-2023  润新知