Рисование сигнала в C#

Я хочу иметь возможность отображать WaveForm на С# вместе с некоторыми простыми функциями, такими как масштабирование и выделение. У меня уже есть данные в виде коротких [] значений амплитуды.

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

Итак, могу ли я попросить некоторые методы и, возможно, некоторые ссылки, которые помогут? Спасибо!


person user488792    schedule 26.02.2011    source источник


Ответы (2)


У NAudio есть пример приложения WPF, которое отображает формы волны — вы можете получить исходный код из codeplex, у автора также есть статья на эту тему здесь .

person BrokenGlass    schedule 26.02.2011
comment
Как Роланд прокомментировал статью в ссылке: я не уверен, что использование геометрических фигур высокого уровня - лучший подход в этом конкретном случае. - Я полностью согласен с ним. - person Daniel Mošmondor; 18.03.2011

Как и в случае с любой диаграммой, вам придется перебирать значения X и рисовать соответствующее значение Y, взятое из имеющегося у вас массива образцов.

Если вы хотите панорамировать аудио влево и вправо, вам придется компенсировать получение данных из массива. Если вы добавите возможность уменьшения масштаба - так, чтобы один пиксель на экране соответствовал некоторым образцам (попробуйте для начала с целыми числами), вам придется усреднить некоторые значения, а затем нарисовать соответствующее значение.

Если слов PIXEL и SAMPLE еще нет в вашем лексиконе, прежде чем рисовать осциллограмму, вы должны с ними ознакомиться, потому что никакое количество чужого кода не научит вас, как это делать.

person Daniel Mošmondor    schedule 26.02.2011