@AndrewGrinev

Delphi — Как оптимизировать отрисовку синусоидальной кривой с количеством сэмплов более 1.000.000?

Вообщем возникла следующая проблема: имеется в буфере более 1.000.000 точек, необходимо вывести график с наименьшими затратами на время. На данный момент использую MoveTo - LineTo, но как вы сами понимаете, это очень медленно. Пробовал использовать алгоритм Рамера-Дугласа-Пекера для уменьшения точек кривой, достаточно хорошо отрабатывает, но медленно. Так же рассчитывал попадание точек кривой в пиксель экрана и просто проводил сплошную линию, тем самым уменьшая количество вызовов метода LineTo. Результат так-же не впечатлил. Будут какие-либо предложения по оптимизации?
  • Вопрос задан
  • 2398 просмотров
Пригласить эксперта
Ответы на вопрос 3
AnnTHony
@AnnTHony
Интроверт
Есть же специальные компоненты, TChart например. Попробуйте.
Ответ написан
@Myu2
А вы как масштабируете это все ?
Приведите пожалуйста участок кода с циклом MoveTo-LineTo и вычислениями
Ответ написан
bejoy
@bejoy
Не совсем понятно что именно у вас "тормозит". Вы пытаетесь нарисовать на канве 1 000 000-1 линий или это канва со скороллом? Сложно давать какие-то советы по оптимизации того, что трудно представить.

Как вариант, можно попробовать усреднить соседние значения, что уменьшит объем данных вдвое.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы