Пользовательский элемент управления wpf: прямоугольник формы аудио с ползунком выбора - PullRequest
3 голосов
/ 26 октября 2010

Я работаю над приложением c # wpf, в котором я хочу сделать что-то со звуком. аудио библиотека irrklang предоставляет мне 16-битный байтовый массив, декодированный с помощью pcm.

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

Используется для обрезки звуковой дорожки. Я хотел бы, чтобы выбранные минимальное и максимальное значения были привязаны к данным, а минимальное и максимальное значение общей дорожки можно привязать.

Для пояснения вот макет изображения:

alt text

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

Я думаю, что мне нужно решить: элемент управления (масштабирование, панорамирование и изменение выделения) и рисование формы сигнала в элементе управления

Заранее спасибо,

Ответы [ 2 ]

2 голосов
/ 06 марта 2013

Я думаю, вы должны проверить этот проект codeplex http://wpfsvl.codeplex.com/

1 голос
/ 07 ноября 2010

См. Рисование аудио WaveForm с использованием WPF .

Было бы полезно что-то основанное на WaveFileTrimmerControl.xaml , оно использует связанные элементы управления PolygonWaveFormControl.xaml & RangeSelectionControl.xaml (ссылки на XAML, но ссылаются на XAML в CS тоже). В любом случае это было бы хорошей отправной точкой для создания элемента управления, который точно соответствует тому, что вы хотите.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...