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