Malowanie w wątku

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

Malowanie w wątku

Nowy postprzez Corvis » piątek, 6 grudnia 2013, 11:23

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
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: Malowanie w wątku

Nowy postprzez polymorphism » piątek, 6 grudnia 2013, 15:41

Według dokumentacji TCanvas dziedziczy po klasie TCustomCanvas, a ta z kolei posiada metody Lock i Unlock. Zatem nie widzę problema :)
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Malowanie w wątku

Nowy postprzez Corvis » poniedziałek, 9 grudnia 2013, 09:44

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 ??
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: Malowanie w wątku

Nowy postprzez polymorphism » poniedziałek, 9 grudnia 2013, 10:44

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.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Malowanie w wątku

Nowy postprzez Corvis » poniedziałek, 9 grudnia 2013, 15:50

Kolejkowanie danych ? czy kolejkowanie malowania ?
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: Malowanie w wątku

Nowy postprzez polymorphism » poniedziałek, 9 grudnia 2013, 15:56

W tym kontekście na jedno wychodzi ;)
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Malowanie w wątku

Nowy postprzez Corvis » wtorek, 10 grudnia 2013, 21:58

Dzięki :)
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje multimedialne, graficzne

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość

cron