2014-02-13 23 views
0

我有一个780x585的图像。我将此图片的大小调整为1246.93x935.19,并使用scaleMode = ScaleMode.LETTERBOX。Flex移动GetPixel功能的调整大小的图像获取像素,如果图像有它的原始大小

当用户点击一个图形并将其拖入图片中时,我应该获得图形被放置的像素位置。

我这样做是通过听鼠标向上事件并通过调用带有鼠标点击释放时事件的(x,y)坐标的getPixel。

奇怪的是,我得到的像素的价值,但不是真正的。相反,我得到与正常大小的图像相对应的值,而不被调整大小。

有没有人有线索为什么发生这种情况?

谢谢, 戴夫

回答

1

当应用一些视觉改变的组件(如移动,旋转或伸展,如在这里),则Flex将被施加transormation矩阵仅修改该对象的视觉外观。

假设您正在通过执行image.width * = 2来移动图像;实际的图像宽度将被修改。如果你做image.matrix.scale(2,1); (这是伪代码),视觉外观将被修改,以便您可以看到调整大小,但实际宽度将保持不变。

我认为应用Letterbox调整大小是使用矩阵转换,所以即使您的图像显示较大,其位置和大小仍然相同。这就是为什么你的位置和以前一样。

要解决你的问题,你只需要乘以你得到的坐标(与event.localX或其他任何东西)的图像当前缩放,应该是它。 如果你已经知道最终尺寸,你只需要做一些事情:newLocalX = event.localX *(resizedImage.width/originalImage.width);

这里的一些信息,如果你想知道如何Matrixes工作。