Bitmap mBi = Bitmap.createBitmap(100, 100, Config.ALPHA_8);
这句是什么意思?在这句之后有一句(mCan是一个canvas对象)
mCan = new Canvas(mBi);
什么作用?如果我换成Bitmap tempBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.pdf);mBi = Bitmap.createBitmap(tempBitmap);mCan = new Canvas(mBi);
这样就会强制退出,怎么解决?
我现在的想法就是让他先绘制一张自己的图。

解决方案 »

  1.   

    Bitmap mBi = Bitmap.createBitmap(100, 100, Config.ALPHA_8);
    这句是根据参数创建一个新的位图,前一个100表示宽,后一个表示高,最后一个参数是系统的配置信息(内部类Bitmap.Config类,是一个枚举,有ALPHA_8, ARGB_4444,ARGB_8888,RGB_565,他们都是色彩的存储方法 )我们知道ARGB指的是一种色彩模式,里面A代表Alpha,R表示red,G表示green,B表示blue,其实所有的可见色都是右红绿蓝组成的,所以红绿蓝又称为三原色,每个原色都存储着所表示颜色的信息值 
    说白了就ALPHA_8就是Alpha由8位组成 
    ARGB_4444就是由4个4位组成即16位, 
    ARGB_8888就是由4个8位组成即32位, 
    RGB_565就是R为5位,G为6位,B为5位共16位 
    由此可见: 
    ALPHA_8        代表8位Alpha位图 
    ARGB_4444      代表16位ARGB位图 
    ARGB_8888     代表32位ARGB位图 
    RGB_565         代表8位RGB位图 
    位图位数越高代表其可以存储的颜色信息越多,当然图像也就越逼真 
      

  2.   

    Bitmap mBi = Bitmap.createBitmap(100, 100, Config.ALPHA_8);// 宽、高、画质
    创建的bitmap是可变的。
    Bitmap tempBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.pdf);
    创建的是不可变的。
    Canvas(Bitmap bitmap)构造函数创建一个画布,需要可变的bitmap做参数通俗的理解就是画布上的图片要是能够被改变的,不然怎么能在上面画图呢~
      

  3.   

    mCan = new Canvas(mBi);
    表示创建一个画布,就像我们画图一样,图画肯定是画在画布上,画布相当于是一个承载对象。
      

  4.   

    Bitmap mBi = Bitmap.createBitmap(100, 100, Config.ALPHA_8);
    是对应Bitmap类的createBitmap (int width, int height, Bitmap.Config config) 
    而Bitmap.Config类有四个常量,ALPHA_8 ,ARGB_4444    ,ARGB_8888    ,RGB_565  
    而这个方法官方的解释是:Returns a mutable bitmap with the specified width and height
    也就是说会返回一个可以修改的bitmap用指定的宽高,第三个参数指的是返回的bitmap的透明度而你给出的方法:
    Bitmap tempBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.pdf);mBi = Bitmap.createBitmap(tempBitmap);mCan = new Canvas(mBi);
    返回的mBi是一个immutable也就是不可修改的Bitamp,new Canvas(mBi)就是说使用mBi当做画板作图,试想一下你这种mBi是不可变,如果你要强行在它上面进行作画,你说他会不会强行退出
      

  5.   

    如果你只是想绘图的话,继承View中的onDraw在里面画就OK了.Bitmap tempBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.pdf);
    canvas.drawBitmap(tempBitmap, 0, 0, null);