Strona 1 z 1

Malowanie w wątku

Nowy postNapisane: piątek, 6 grudnia 2013, 11:23
przez Corvis
Witam,

Czy ma ktoś przykładowy program w delphi albo C++ Builder w którym malowanie odbywa się w wątku ??

Ostatnio sporo czasu spędzam w Androidzie i tam jest to super rozwiązane :) Prosty przykład:

KOD cpp:     UKRYJ  
class ThreadClass extends Thread {
               
        boolean threadIsWorking = true;
               
        public void run() {
                       
                while(threadIsWorking) {
                                 
                        if(threadIsWorking == false)    { break; }
                        if(przeliczenia == true)                { continue; }
                        if(malowanieTla == true)                { continue; }  
                               
                        Canvas canvas = holder.lockCanvas(null);
                               
                        if(canvas == null) { continue;  }
         // MALOWANIE
         holder.unlockCanvasAndPost(canvas);
     }
}
 


Dokładnie coś podobnego chce zrobić w Builderze

Re: Malowanie w wątku

Nowy postNapisane: piątek, 6 grudnia 2013, 15:41
przez polymorphism
Według dokumentacji TCanvas dziedziczy po klasie TCustomCanvas, a ta z kolei posiada metody Lock i Unlock. Zatem nie widzę problema :)

Re: Malowanie w wątku

Nowy postNapisane: poniedziałek, 9 grudnia 2013, 09:44
przez Corvis
Znalazłem :) zrobiłem ale bez wątku jeszcze. Może coś doradzisz.

Robię oscyloskop - dane do niego "przylatują" co ok 100 [ms] wygląda to tak, że po skopiowaniu danych do Bufora wywołuję funkcję malującą i teraz nie wiem jak tu wątek zastosować. Czy po wpisaniu danych do bufora wywoływać watek malujący ? czy też zrobić jak w Androidzie, że maluje się w wątku w pętli nieskończonej ??

Re: Malowanie w wątku

Nowy postNapisane: poniedziałek, 9 grudnia 2013, 10:44
przez polymorphism
Tworzenie nowego wątka za każdym razem, gdy przychodzi nowa partia danych, jest nieefektywne. Ja bym wybrał opcję drugą, ale dodałbym jeszcze kolejkę FIFO, żeby przestoje w malowaniu nie blokowały wątku dostarczającego dane.

Re: Malowanie w wątku

Nowy postNapisane: poniedziałek, 9 grudnia 2013, 15:50
przez Corvis
Kolejkowanie danych ? czy kolejkowanie malowania ?

Re: Malowanie w wątku

Nowy postNapisane: poniedziałek, 9 grudnia 2013, 15:56
przez polymorphism
W tym kontekście na jedno wychodzi ;)

Re: Malowanie w wątku

Nowy postNapisane: wtorek, 10 grudnia 2013, 21:58
przez Corvis
Dzięki :)