使用setScale和setTranslate(Matrix)

时间:2011-03-19 05:16:42

标签: java android mobile bitmap

在我的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(); 

提前致谢

2 个答案:

答案 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);