Есть формула в DisplacementMapFilter ссылка:
dstPixel[x, y] =
srcPixel[
x + ((componentX(x, y) - 128) * scaleX) / 256,
y + ((componentY(x, y) - 128) *scaleY) / 256)
]
componentX/Y
- это цветные каналы в растровом изображении (вы можете привязать любой канал к координатам).
Как я понимаю, вам нужно сместить метки карты, как это сделал бы фильтр. Просто возьмите координаты метки (x, y), образец исходного растрового изображения с getPixel32(x, y)
. Затем вам нужно выяснить, какие байты взять для x, y - я думаю, по умолчанию это будут компоненты R, G соответственно. Затем используйте формулу, чтобы получить смещенные координаты метки.
Примечание: getPixel32 возвращает цвет uint в формате ARGB. Используйте оператор сдвига (>>
), чтобы получить компоненты цвета:
uint ARGB = bitmap.getPixel32(x, y);
int B = ARGB & 0xFF;
int G = (ARGB >> 8) & 0xFF;
int R = (ARGB >> 16) & 0xFF;