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

Jud*_*udy 8 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);
Run Code Online (Sandbox Code Playgroud)

我不明白这段代码.为什么drawingBitmap是bmp1和bmp2的组成?

nil*_*nil 10

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

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


Anh*_*uan 5

让我们canvas像一支笔和drawingBitmap一张纸一样思考。你用笔在纸上画一些东西,你就会得到你所画的东西。从技术上讲,您可以构造Canvas对象Bitmap并在其上绘制其他位图。