亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述Android中在Bitmap上画网格线相关的知识,希望能为你提供帮助。
【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中的设计模式之观察者模式
- Android Studio Git 分支使用实践
- Android中的菜单
- 想让安卓app不再卡顿(看这篇文章就够了)
- android recycleView 简单使用二---分割线
- Android实用代码
- 移动 App 接入 QQ 登录/分享流程
- Ionic3 填坑记录 - java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.Dex
- 微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布!!!