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

时间:2014-12-23 10:32:41

标签: android canvas matrix bitmap concat

我读了这个画布概述:

  

Canvas类拥有" draw"调用。画一些东西,你需要4   基本组件:一个用于保存像素的位图,一个用于托管的Canvas   绘制调用(写入位图),绘图基元(例如Rect,   路径,文本,位图)和绘画(描述颜色和样式   为了绘图)。

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

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

canvas.drawBitmap(bitmap, matrix, paint);

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

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

1 个答案:

答案 0 :(得分:5)

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

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

    canvas.save();
    canvas.concat(matrix);
    canvas.drawBitmap(rectBitmap, 0, 0, paint);
    canvas.restore();

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