0

about中的文件Canvas.setMatrix()说:

用指定的矩阵完全替换当前矩阵。如果矩阵参数为空,则当前矩阵重置为单位。

关于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)。

4

1 回答 1

0

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

于 2012-11-23T08:04:42.987 回答