在我的Android应用程序中,我有一个加载的图像。使用此图像,用户可以放大,缩小和来回移动它。目前我只能一次上班。
经过大量的测试后,我确定无论我称之为第二个是有效的。
matrix.setScale(zoom, zoom); // this will not work
matrix.setTranslate(currentX, currentY); // this will work
canvas.drawBitmap(image, matrix, null);
如果我运行了所有相同的代码,但只是简单地切换了setScale,那么它就能工作,但setTranslate不会。
这似乎应该是一个简单的答案。 顺便说一句:我使用post设置代码的方式不实用。
matrix.postScale();
matrix.postTranslate();
提前致谢
答案 0 :(得分:20)
当您调用任何set *()方法时,您将替换Matrix的整个内容。在第一个示例中,仅考虑setTranslate()。您需要使用pre *()和post *()方法来组合translate和scale操作。
答案 1 :(得分:0)
响应代码Romain
matrix.setScale(zoom, zoom); // this will not work
matrix.postTranslate(currentX, currentY); // this will work
canvas.drawBitmap(image, matrix, null);