Большая проблема заключается в огромном количестве изображений, которые можно зациклить и проверить на прозрачность.Если растровые изображения и их расположение не сильно изменяются (относительно друг друга), то есть довольно чистое решение:
Make an array of bitmaps(references to bitmaps actually so not consuming a
gigamount of memory) the size of your screen (or even bigger when you want
to be able to pan around in a bigger area like in a platform game for example).
Loop over all images in z order (beginning with the image furthest away)
[Calculate a mask for each image (making a black and white bitmap, white is transparent, black is everything else)]
Loop over the pixels in the image [mask] and update the array (mind the offset) to the current bitmap if not transparent
Теперь каждый раз, когда вы хотите получить изображение, на котором мышь находится, вы можетеиспользуйте этот массив, чтобы найти его.
Вам придется пересчитывать его каждый раз, когда меняется макет.
Это дает вам общие рекомендации, возможны многие варианты оптимизации.