调整大小的图像的Flex Mobile GetPixel函数获取像素,就像图像具有原始大小一样

时间:2014-02-13 16:56:33

标签: image flex flex4 flex-mobile

我的图像是780x585。我正在使用scaleMode = ScaleMode.LETTERBOX将此图像调整为1246.93x935.19。

当用户点击图形并将其拖入图片时,我应该得到图形被丢弃的像素位置。

我通过聆听鼠标按下事件并通过在释放鼠标时使用来自事件的(x,y)坐标调用getPixel来做到这一点。

奇怪的是我获得了像素的值而不是真实的像素值。取而代之的是,我得到了与图像相对应的值,并且没有调整大小。

有没有人知道为什么会这样?

谢谢, 戴夫

1 个答案:

答案 0 :(得分:1)

当对组件应用一些视觉变化时(如此处的移动,旋转或拉伸),Flex将应用变换矩阵来仅修改对象的视觉外观。

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

我认为应用Letterbox调整大小是使用矩阵变换,所以即使你的图像看起来更大,它的位置和大小仍然是相同的。这就是为什么你和以前一样的原因。

要解决您的问题,您只需将您获得的坐标(使用event.localX或其他任何内容)乘以图像当前缩放比例即可。 如果您已经知道最终大小,则只需执行以下操作:newLocalX = event.localX *(resizedImage.width / originalImage.width);

如果您想知道Matrixes如何运作,请参阅以下信息。