Witam serdecznie
Opisze ten problem po kolei:
Sprawdzanie pozycji myszki czy jest na polu bitmap'em to działa mi.
tylko problem jest w przypadku, gdy nasz bitmap jest np. zakryty połowie przez drugiego bitmapa
i trzeba sprawdzić gdzie nie jest zakryty i wtedy zwrócić prawdę
(Tutaj obrazek umieszczam)
Teraz tutaj opisze moje rozwiązanie, które ma problemy
Oto rozwiązanie:
Każdy bitmap ma swoją kopie która jest wypełniona danym kolorem
aby potem identyfikować bitmap za pomocą koloru.
Te wszystkie kopie bitmap'ów rysujemy na specjalnym bitmap'ie, a
oryginalne rysujemy normalnie w oknie.
Potem w pętli przy zdarzeniu myszki ALLEGRO_EVENT_MOUSE_AXES
w funkcji odpowiedzialnej za najeżdżanie myszką na bitmap'a jest
sprawdzenie pozycja kursora czy jest na polu bitmap'a i potem
, aby się upewnić czy dany punkt nie jest zakryty przez inny
bitmap to sprawdzamy punkt przy użyciu funkcji
al_get_pixel(bitmap, x, y)
pobierającego pixel z specjalnego bitmapa który zawiera narysowane wszystkie kopie
bitmap'ów w odpowiednim kolorze.
Jeśli kolor będzie się zgadzał to zwracamy true.
Pomysł bardzo dobry, tylko przy częstym najeżdżaniu myszką na ten
bitmap to po chwili robią się lagi i program nie raz na chwile
zacina się i dopiero po chwili odzyskuje sprawność.
Nawet blokowanie danego rejonu bitmapa i potem pobierając i od blokując go
też nie dawało efektów których oczekuje.
Nawet na początku projektu ustawiłem nową flagę dla nowych bitmap'ów
ALLEGRO_NO_PRESERVE_TEXTURE, która wyłącza o dbanie tekstury bitmapa.
Też to nie pomaga i po prostu skończyły mi się pomysły jak to zrealizować.
Może macie jakieś rozwiązanie mojego pomysły, albo swój jakiś pomysł jak wy to rozwiązujecie takie problemy.
Pozdrawiam.