Рисование графика в реальном времени (форма волны) - PullRequest
8 голосов
/ 28 февраля 2012

Я хотел бы в будущем сделать несколько проектов со звуком в C # .NET 4.0, поэтому я собрал несколько примеров кода для аудиозаписи, работы с файлами WAVE и т. Д. Но я не смог найти :

Как рисовать звуковые сигналы / спектрограммы в режиме реального времени (ish)? Очевидно, что создание растрового изображения в памяти и загрузка его в графический блок будет очень медленным, верно? Итак, какой самый простой способ?

Спасибо!

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Просто рисуйте прямо на подходящей поверхности управления, то есть на панели. Получите графический контекст элемента управления и обновите его в событии Paint, используя функцию Invalidate (). Каждый раз, когда вы аннулируете, Paint вызывается автоматически. Здесь вы хотите поместить свою логику рисования.

Лучший способ обновить его - использовать DrawImageUnscaled (). Само изображение быстрее всего получается с помощью метода LockBits, который отлично объясняется здесь:

http://www.bobpowell.net/lockingbits.htm

1 голос
/ 28 февраля 2012

Вы можете использовать Графика и рисование на основе GDI + в Windows Forms для непосредственного рисования вашего контента. Это будет намного быстрее, чем рендеринг в растровое изображение и отображение в графическом окне для постоянно меняющегося содержимого.

...