Android中canvas和matrix之间的关系是什么?

beb*_*osh 4 android concat canvas bitmap matrix

我读了这个画布概述:

Canvas类包含"绘制"调用.要绘制一些东西,你需要4个基本组件:一个用于容纳像素的位图,一个用于托管绘图调用的Canvas(写入位图),一个绘图基元(例如Rect,Path,text,Bitmap)和一个paint(to描述绘图的颜色和样式).

任何人都可以更清楚地解释画布吗?

我对画布和矩阵之间的关系感到困惑.画布是否从矩阵中获取变换?我想知道下面的功能是否会影响画布?

canvas.drawBitmap(bitmap, matrix, paint);
Run Code Online (Sandbox Code Playgroud)

换句话说,画布矩阵是否与位图矩阵不同?

我问这个,因为当我使用canvas.drawBitmap然后使用canvas.concat() 然后绘制任何对象时,这个对象在画布上进行相同的转换,所以我认为画布和位图具有相同的矩阵!

tat*_*igo 5

它们是不同的.当使用画布绘制提供矩阵的位图时,在内部,提供的矩阵连接到当前画布矩阵.

换句话说,调用canvas.drawBitmap(rectBitmap, matrix, paint);具有相同的效果:

    canvas.save();
    canvas.concat(matrix);
    canvas.drawBitmap(rectBitmap, 0, 0, paint);
    canvas.restore();
Run Code Online (Sandbox Code Playgroud)

这解释了为什么你的对象正在进行相同的转换,因为你正在调用canvas.concat(matrix);并在绘制对象之后.