Canvas.concat()和Canvas.setMatrix()之间的区别?

时间:2012-11-21 07:19:13

标签: android matrix android-canvas

大约Canvas.setMatrix()的文件说:

  

用指定的矩阵完全替换当前矩阵。如果   matrix参数为null,则当前矩阵重置为   身份。

关于Canvas.concat()说:

  

使用指定的矩阵预先保存当前矩阵。

但是看起来很乖。当我尝试这段代码时:

Matrix matrix = new Matrix();
mCamera = new Camera();
canvas.save();

mCamera.rotateY(y_rotate_angle);
mCamera.getMatrix(matrix);
canvas.concat(matrix);
canvas.drawText(text, 30, 100, redPaint);

//      canvas.restore();
canvas.setMatrix(null);
canvas.setMatrix(matrix);
canvas.drawText(text, 30, 100, greenPaint);

结果,第二个文本将绘制在(60,100)而不是绘图(30,100)(即使我尝试canvas.restore()并评论canvas.setMatrix)。

1 个答案:

答案 0 :(得分:0)

很奇怪!在保存它之前我得到了画布矩阵然后打印出它的成员。我猜它是IDENTITY矩阵,但事实并非如此!所以当我做setMatrix(null)时,矩阵画布由一个矩阵设置,该矩阵不等于画布的原始矩阵,这导致了问题。