Canvas和Bitmap之间的关系是什么?

时间:2011-07-07 03:57:42

标签: android

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的组合?

3 个答案:

答案 0 :(得分:9)

基本上,CanvasBitmap支持,因此当您使用画布绘制任何内容时,画布将绘制到使用它创建的Bitmap。因此,当您使用画布绘制这两个位图时,它会将位图合成在一起,结果将存储在drawingBitmap中,因为它支持画布。

Anh的类比是正确的,虽然可能令人困惑(并且过度简化,我上面也在做) - 正如我在评论中提到的,你可以把Canvas想象为笔, Paint作为该笔的配置(例如,可替换的墨水或其他东西 - 无论您可以配合可配置笔的想法),以及Bitmap作为您绘制的纸张。如果你过分关注单词的可接受含义,那么这个比喻会变得混乱。

答案 1 :(得分:3)

让我们将canvas视为一支笔,将drawingBitmap视为一篇论文。你用笔在纸上画一些东西,就可以得到你画的东西。 从技术上讲,您可以从Canvas构造Bitmap对象以在其上绘制其他位图。

答案 2 :(得分:1)

Canvas是执行/执行绘制操作的地方或媒介,Bitmap负责存储绘制的图片的像素。