Aha, czyli mniej więcej to samo, co pokazałem wyżej. Wbrew pozorom można to zrobić tak, że wykres przy dużym ściśnięciu będzie malowany szybciej niż ten przy zoomie np. 1:128. Trzeba zastosować tę samą metodę, która jest używana w edytorach audio - aplikacje te tworzą plik
peak, który zawiera serię wartości min/max przedziałów po 256 sampli. Dzięki temu przy malowaniu 500 pikselowego wykresu, przy zoomie 256, nie trzeba przeliczać 128000 sampli, tylko 500 wartości (par) z pliku
peak. Jeśli zoom może być naprawdę duży, możesz wygenerować dodatkowe bufory dla przedziałów 4096, 16384 itd. Dodatkowo dochodzi do tego inny sposób malowania (pionowymi liniami), który jest szybszy (tak wynika z moich doświadczeń).
Przy tego typu rozwiązaniu wątek możesz zaangażować tylko do pobierania danych z portu.
---- EDIT ----1 - nie sciśnięte
2 - ściśnięte
Chyba odwrotnie?
