Otoz mam maly a wlasciwie duzy :( problem ;/...
....otoz pisze sobie GUI i powstal problem odswiezania tego co mam na pulpicie. Znam 3 metody na odswiezanie:
a) odrysuj wszytsko w buforze i wywal calosc na ekran - baaardzo wolne i nieefektywne na starszych i wolniejszych kompach, choc bardzo proste
b) odrysuj cale okno, a pozniej w przypadku gdy inne okna je czesciowo zaslaniają, odrysuj ich fragmenty i wywal bufor na ekran - dobre w przypadku gdy wieksza czesc lub calosc okna jest widoczna, im bardziej zasloniente i okno wieksze tym bardziej nieefektywne i wolne
c) dirty rectangles - odswiez tylko to co sie zmienilo i tylko ten fragment okna ktory widzisz - bardzo efektywne, szeroko stosowane, szybkie, ale trudne w realizacji
Tak wiec chcialbym wykorzystac metode dirty rectangles, poniewaz bardzo zalezy mi na predkosci. Metoda ta dziala mniej wiecej tak:
Mam jedno okno ktore wysyla komunikat do silnika GUI aby zostalo odswiezone, w przypadku gdy okno jest w calosci widoczne wystarczy wywalic na ekran cale okno (lub fragment bufora ekranu). Jednak problem robi sie gdy częsc okna jest zalonienta przez inne.
Dirty rectangles dziala w ten sposob, ze mamy liste prostokątnych fragmentow ekranu ktore mają byc odswiezone. Tak wiec gdy okno jest czesciowo zasloniente musimy podzielic widoczny obszar na prostokaty ktore nastepnie zostana odswiezone.
I tu jest moje dokladne pytanie:
Jak podzielic obszar o nieregularnych ksztaltach czyli konkretnie ta czesc okna ktora jest widoczna pod innymi oknami, na prostokaty. Interesuje mnie sam algorytm, poniewaz cala reszta jest juz zrobiona, chcialbym aby to bylo cos w stylu procki do ktorej podajemy wymiary i pozycje okna, i ew. innych okien na wyzszych planach ktore mogą zaslaniac nasze okienko, i zeby ta procka zrobila liste prostokatow (czyli wymiary x,y,width,height), ktore pozniej beda odswiezone.
Bardzo prosze Was o pomoc gdyz naprawde nie jestem sobie w stanie z tym poradzic :/