2011-12-13 38 views
3

我正在使用DisplacementMapFilter在平面貼圖上創建類球體效果。我的問題是,我也想同步一些標籤到這張地圖。我在平面地圖上爲它們的位置設置了x/y座標,但我需要將它們映射到現在位移的圖像。將重疊同步到位移貼圖過濾器

我希望能夠使用包含位移貼圖的BitmapData進行此操作,以便更改位圖更改位移過濾器和標籤位置。此外,標籤不會是靜態的,而且準確性相當重要。

回答

2

有一個在DisplacementMapFilter引用的公式:

dstPixel[x, y] = 
    srcPixel[ 
    x + ((componentX(x, y) - 128) * scaleX)/256, 
    y + ((componentY(x, y) - 128) *scaleY)/256) 
    ] 

componentX/Y是位圖中的顏色通道(可以綁定任何通道座標)。
據我所知,你需要移動地圖標籤過濾器會做。只需用getPixel32(x, y)即可獲取標籤座標(x,y),樣本源位圖。然後你需要找出哪些字節需要爲x,y - 我猜默認情況下它會是R,G分量。然後使用公式來獲得移位的標籤座標。
注意:getPixel32以ARGB格式返回uint顏色。使用移位運算符(>>)獲取顏色分量:

uint ARGB = bitmap.getPixel32(x, y); 
int B = ARGB & 0xFF; 
int G = (ARGB >> 8) & 0xFF; 
int R = (ARGB >> 16) & 0xFF; 
+1

謝謝,但我發現這個算法提供的是謊言。它是'x - ((componentX(x,...'和'y - ((componentY(x ...',不是'+'),因此它可以很好地工作。 –