一个有关canvas的Bug

昨天写程序的时候碰到很恼人的一个问题,刚开始的时候还以为是我程序的原因,当我把所有代码注释掉的时候才发现是一个BUG。

希望哪个会提交BUg的牛人,大神。等等  帮忙提交上去。

Bug描述:

1.创建图片  bitmap = Bitmap.createBitmap(width * 3, width * m, Bitmap.Config.ARGB_8888);

 2.获得这个图片的画布。   canvas = new Canvas(bitmap);

3,使用的时候 ,想把画布的内容重新画一个位置。。

canvas.drawBitmap(bitmap,0,width,null);

如果width<=0的时候 很正常 没有问题:

可是:

当width>0的时候

整个画布全部变成width那么宽的一小块一小块的内容了!!!

很恼人的原因是因为width的值的变化会产生一个不符合逻辑的结果。。

关于修复方法如下:

1,

最后只好将创建的bitmap保存到另一个bitmap里面,

 Bitmap bitmap2=bitmap.copy(Bitmap.Config.ARGB_8888,false);

      canvas.drawBitmap(bitmap2, 0, width, null);

才正常显示。。。,

不过在内存紧张的手机上会有内存溢出的错误,毕竟copy一张图片是很浪费内存的。

2.

直接使用

canvas.drawBitmap(bitmap,rect,rect,null);

就是使用图片的时候直接使用这块图片你想要的位置的内容,, 跳过了图片自己绘制自己和图片复制后再绘制的过程

这样可以达到节约内存,和节约程序效率的目的。

下次讲一个android手机删除系统应用后,如何恢复到一模一样的方法~~   知道很多误删手机应用的同志很期待呢 ,,, 哈哈  

转载于:https://www.cnblogs.com/zhenbeiju/archive/2011/09/29/2195328.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值