Canvas和Bitmap之间有什么关系?
Bitmap drawingBitmap = Bitmap.createBitmap(bmp1.getWidth(),
bmp1.getHeight(), bmp1.getConfig());
canvas = new Canvas(drawingBitmap);
paint = new Paint();
canvas.drawBitmap(bmp1, 0, 0, paint);
paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SCREEN));
canvas.drawBitmap(bmp2, 0, 0, paint);
compositeImageView.setImageBitmap(drawingBitmap);
我不明白这段代码。为什么drawingBitmap是bmp1和bmp2的组合?
答案 0 :(得分:9)
基本上,Canvas
由Bitmap
支持,因此当您使用画布绘制任何内容时,画布将绘制到使用它创建的Bitmap
。因此,当您使用画布绘制这两个位图时,它会将位图合成在一起,结果将存储在drawingBitmap
中,因为它支持画布。
Anh的类比是正确的,虽然可能令人困惑(并且过度简化,我上面也在做) - 正如我在评论中提到的,你可以把Canvas
想象为笔, Paint
作为该笔的配置(例如,可替换的墨水或其他东西 - 无论您可以配合可配置笔的想法),以及Bitmap
作为您绘制的纸张。如果你过分关注单词的可接受含义,那么这个比喻会变得混乱。
答案 1 :(得分:3)
让我们将canvas
视为一支笔,将drawingBitmap
视为一篇论文。你用笔在纸上画一些东西,就可以得到你画的东西。
从技术上讲,您可以从Canvas
构造Bitmap
对象以在其上绘制其他位图。
答案 2 :(得分:1)
Canvas
是执行/执行绘制操作的地方或媒介,Bitmap
负责存储绘制的图片的像素。