Android中在Bitmap上画网格线

Posted adapter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中在Bitmap上画网格线相关的知识,希望对你有一定的参考价值。

传入一个bitmap图片,和指定网格线的间隔(以像素为单位),返回新的带网格线的Bitmap

   private static Bitmap drawBackground(Bitmap bitmap,int pixInterval) {
        /**
         * 注意多个createBiamap重载函数,必须是可变位图对应的重载才能绘制
         * bitmap: 原图像
         * pixInterval: 网格线的横竖间隔,单位:像素
         */
        Bitmap copy = Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(), Bitmap.Config.ARGB_8888);  //很重要
        Canvas canvas = new Canvas(copy);  //创建画布
        Paint paint = new Paint();  //画笔
        paint.setStrokeWidth(1);  //设置线宽。单位为像素
        paint.setAntiAlias(true); //抗锯齿
        paint.setColor(Color.RED);  //画笔颜色
        canvas.drawBitmap(bitmap,new Matrix(),paint);  //在画布上画一个和bitmap一模一样的图
//根据Bitmap大小,画网格线 //画横线 for (int i = 0; i < bitmap.getHeight() / pixInterval; i++) { canvas.drawLine(0, i * pixInterval, bitmap.getWidth(), i * pixInterval, paint); } //画竖线 for (int i = 0; i < bitmap.getWidth() / pixInterval; i++) { canvas.drawLine(i * pixInterval, 0, i * pixInterval, bitmap.getHeight(), paint); } return copy; }

效果图:间隔80像素:

技术分享图片

 

注意点:只有在可变的bitmap上才能进行矩形、圆形、线的绘制

    其中Bitmap.create()有很多重载方法,必须选择返回值为可变bitmap的方法。

    比如:Bitmap.createBitmap(Bitmap bitmap);   和  Bitmap.createBitmap(Bitmap source,int x,int y,int width,int height)这两种类型就是不可变的。编译器会报错,原因是不能在返回的bitmap上绘制。


以上是关于Android中在Bitmap上画网格线的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL ES在android上画一个正方形

音频处理Melodyne 网络缩放功能 ( 音符分离线 | 片段分离线 | 窗口滚动条 | 网格缩放 | 修改图像显示位置 | 显示五线谱 )

怎么在ARCGIS中国地图上画线

blender中在网格两个顶点间加线的几种方法

在片段中在运行时更改方向时更改布局而不重新创建视图

ios如何在drawrect方法中在图像上画一条线