android.graphics.Matrix - > postScale如何工作

时间:2011-10-03 11:29:19

标签: android

下午好,

假设我有一个矩阵。我有2个值,.9用于缩小,1.1用于放大。

当我应用matrix.postScale(0.9, 0.9); 3次时 然后我应用matrix.postScale(1.1, 1.1); 3次

我不回到我开始的地方!

例如,以下是我记录的结果:

当前比例postScale(x,x)结果比例

1                  .9               .9
.9                 .9               .80999994
.80999994          .9               .7189999

.7189999           1.1              .8018999
.8018999           1.1              .8820899
.8820899           1.1              .97029895

正如你所看到的,我不会回到1.发生了什么,我是否错误地获得了当前的比例?

例如,为了获得右边的所有值,我在应用postScale后执行了此操作:

matrix.getValues(tempArrayFloat);
Number = tempArrayFloat[Matrix.MSCALE_X];

我只是假设MSCALE_X和MSCALE_Y会相同?

我的问题是,如果我使用1个特定值3次缩放矩阵,.9 - > .9 - > .9,我需要将它缩放回原来的位置?

-Kind问候,

2 个答案:

答案 0 :(得分:7)

表格右侧的数字为您提供答案,缩放矩阵将点数乘以缩放值。因此matrix.postScale(0.9)应用0.9*0.9*0.9 = 0.729三次缩放比例matrix.postScale(1.1)。将1.1*1.1*1.1=1.331三次缩放应用1.0/0.729=1.372。要回到开始的位置,您需要按{{1}}

进行缩放

答案 1 :(得分:2)

使用1.111111112而不是1.1来缩放它,但如果要缩放位图,则可能更容易将其调整为圆值。

基本上你可以陈述matrix.postScale(1.0/0.9, 1.0/0.9);这应该将它四舍五入到最近的像素