2014-02-13 26 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工作。