有人可以解释一下Matrix(Mr.Anderson)吗?

时间:2011-11-18 06:36:38

标签: java android matrix bitmap

我是手动操作图像的新手,所以请耐心等待。

我有一个图像,我允许用户缩小/增长和移动。

基本行为完美无缺。但是,我需要能够抓取“视口”(可见剪裁区域矩形)中的任何内容并将其另存为单独的位图。

在我能够做到这一点之前,我需要修复图像实际存在的位置以及显示的内容。事实证明这比我想象的要复杂得多。

我的问题是Matrix文档非常模糊,我迷失了如何测量变换图像的坐标和尺寸。正如我所看到的,即使用户收缩/增长,图像的X,Y也保持不变。因此,即使报告为0,0,它也显示在(例如)100,100。而我获得这些坐标的唯一方法就是做一个相当丑陋的计算(再次......我可能不是最优雅的方式,因为几何不是我的强项)。

我有点希望我遗漏了一些东西,并且有一些方法来拉动对象的自动翻译坐标和尺寸。

在理想世界中,我可以调用(伪)myImg.getDisplayedWidth()myImg.getDisplayedX()

哦,我应该补充一点,这可能都是一个问题,我通过使用图像的中心作为增长/收缩的点来引起自己。如果我将默认的0,0坐标作为非变化点,我认为无论大小如何,位置都是正确的。所以...也许这一切的答案就是简单地找出我的中心偏移量并将其应用到我的翻译中?

所有帮助都非常感谢(人们不会随意乱搞我的问题标题!)。

1 个答案:

答案 0 :(得分:2)

Matrix方法mapPoints(float[] dst, float[] src)可用于通过应用矩阵转换来获取一系列转换点。或者(稍微)更多外行人的术语,Matrix类的实例不仅包含翻译指令,还包含将矩阵翻译应用于一系列点的便捷方法。

因此,在您的情况下,您只需要未翻译的位图(x,y,width,height)的角,并将角点传递给该方法以获得翻译点。