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