Я программирую в Visual Studio .Net и используя C#.Эффективное использование OnPaint
Я создаю свой собственный элемент управления, который рисует волну на основе значений, которые я получаю от аналого-цифрового преобразователя (АЦП). Я беру входящие точки и преобразовываю их в точки X и Y, чтобы правильно рисовать граф под моим контролем.
У меня есть цикл внутри моего метода OnPaint, который проходит через все точки и вызывает метод DrawLine между текущей точкой и следующей точкой.
Однако это очень неэффективно, так как некоторые из этих графиков имеют 8192 точки, и система фактически имеет девять АЦП, которые я хотел бы показать одновременно. Каждый раз, когда страница перерисовывается, для перерисовки всех графиков (особенно во время отладки) требуется почти секунда.
Кроме того, у меня есть функциональность, которая позволяет вам увеличивать и панорамировать волны, чтобы получить лучший обзор (действует так же, как на картах Google), и все 9 волн увеличивают масштаб и панорамируют вместе.
Все эти функции очень «отрывистые», потому что я вызываю invalidate на mousewheel и mousemove. В принципе, все работает, но не так гладко, как хотелось бы.
Мне было интересно, есть ли способ создать предписанный объект из данных, а затем просто нарисуйте расширенную и переведенную версию изображения в области рисования.
Любая помощь будет принята с благодарностью, даже если она просто указала мне в правильном направлении.
Обращаясь к комментариям ниже, так как я не был ясно в своем посте. Данные НЕ транслируются. Я запрашиваю набор данных, а затем работаю с этим набором, поэтому статическое изображение является возможным решением. Просто хотел уточнить. Теперь я изучаю другие предложения. – EatATaco