寻找post/pre/set Translate(在Matrix对象中)以及如何使用它们的解释

Gen*_* S. 58 android bitmap matrix android-canvas

关于使用这些方法时实际发生的情况,文档非常模糊.有人可以解释Matrix实际上如何影响它所设置的位图吗?他们在那里使用了连接这个术语,但是我不清楚这个术语如何应用于坐标数据(之前只用过字符串操作).

Alb*_*bin 140

set-methods将使用新值替换当前Matrix,而忽略之前包含的Matrix.pre和post方法将在当前Matrix包含的任何内容之前或之后应用新转换.

在这个例子中,旋转将被忽略,因为我们使用的是set方法,而m只包含一个翻译:

矩阵m = new Matrix();

m.setRotate(90);

m.setTranslate(100,100);

在此示例中,最终矩阵将是一个平移后跟一个旋转:

矩阵m = new Matrix();

m.setTranslate(100,100);

m.postRotate(90);

在最后一个例子中,最终矩阵将是一个旋转,然后是翻译:

矩阵m = new Matrix();

m.setTranslate(100,100);

m.preRotate(90);

这篇(相当冗长)的帖子中有更多信息:

http://www.satyakomatineni.com/akc/display?url=displaynoteimpurl&ownerUserId=satya&reportId=2898

希望能帮助到你.

  • 链接已过时。使用这个:https://medium.com/a-problem-like-maria/understanding-android-matrix-transformations-25e028f56dc7 (3认同)
  • 关于它使用的坐标的一些评论在这个答案中也将是超级的。例如,“旋转后平移”是相当明显的:但是它如何在 x 和 y 轴方面实现这一点呢?如何围绕其中心点而不是坐标根旋转某物。 (2认同)
  • 问题是关于pre/post/set方法之间的区别.api文档对每个转换的不同变体都很清楚.当您以不同的顺序应用转换时,参数值当然会有一些后果,但这里有点偏离主题. (2认同)