zoukankan      html  css  js  c++  java
  • 一个有关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手机删除系统应用后,如何恢复到一模一样的方法~~   知道很多误删手机应用的同志很期待呢 ,,, 哈哈  

  • 相关阅读:
    UE4美术之数学基础知识(一)
    如何用Unity制作逼真的自然场景?
    git拉取和上传项目代码
    Chaosblade-故障使用工具
    如何对数据库做优化
    分布式和集群的概念
    token、cookie、session的区别
    Json中的json.tojsonString()方法
    JSON的put方法
    fastjson中的相关方法
  • 原文地址:https://www.cnblogs.com/zhenbeiju/p/2195328.html
Copyright © 2011-2022 走看看