@ars-bars

C# GDI+ нарисовать график в 30 000 точек?

Всем привет!

Используя C# Graphics нарисовать график в 30 000 точек в общем-то несложно. Но работать потом с ним (увеличить масштаб например) затратно с точки зрения ресурсов. Наверно разумно рисовать столько точек, сколько физически может уместиться в текущем размере в пикселях.
Предположим, есть массив из 30 000 точек. Как построить такой график на ширине в 800px по "средним"(не знаю, как правильно) точкам? А потом увеличить какую-нибудь конкретную область, чтобы график обновился и стал чётче.
  • Вопрос задан
  • 435 просмотров
Пригласить эксперта
Ответы на вопрос 1
DmitryITWorksMakarov
@DmitryITWorksMakarov
Все 30 000 точек строить необязательно.
В "хороших" графиках в мелких масштабах графики линейны, поэтому можно заменить линейной интерполяцией.

То есть:
1. выберем все точки в нужном диапазоне.
2. далее берем последовательно точки из этого диапазона, только если расстояние по Х до предыдущей превышает deltaXminGraph в пикселях.
3.Соединяем прямым отрезком предыдущую и текущую точку.

Имеет смысл для текущего масштаба запомнить/закэшировать используемые точки.

Но это будет работать, если графики "хорошие"....гладкие....

Если же присутствует некий шум....всякое шебуршение, импульсы.....то надо сначала отфильтровать его...
Если же этот шум тоже нужно нарисовать, то тут уже разные варианты появляются.....в зависимости от того что именно интересно....
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы