2010-10-25 10 views
3

Je travaille sur une application C# wpf dans laquelle je veux faire quelque chose avec l'audio. la bibliothèque audio irrklang me fournit un tableau d'octets de 16 bits décodés pcm. Je veux créer un contrôle de chronologie qui montre la forme d'onde le long de la timeline avec un rectangle de recouvrement que l'utilisateur peut faire glisser et cliquer/faire glisser les côtés gauche et droit pour augmenter ou diminuer la sélection.wpf contrôle personnalisé: rectangle audiowaveform avec curseur de sélection

Il est utilisé pour rogner la piste audio. Je voudrais que les min et max sélectionnés soient databindables, la valeur minimum et maximum de la piste totale pouvant être liée.

Pour clarifier ici est une image mockup:

alt text

Je ne demande pas pour un contrôle complet, mais des conseils et des suggestions sur la façon d'aborder ce sont plus que bienvenus. Peut-être que des solutions comme celle-là existent déjà mais jusqu'à présent, je n'ai pas réussi à le trouver.

Je pense que je dois aborder: le contrôle (zoom, panoramique et modification de la sélection) et en tirant la forme d'onde dans le contrôle

Merci à l'avance,

Répondre

1

Se reporter à la Audio WaveForm Drawing Using WPF.

Quelque chose basé sur WaveFileTrimmerControl.xaml serait utile, il utilise des contrôles connexes PolygonWaveFormControl.xaml & RangeSelectionControl.xaml (liens sont à la XAML, mais font référence à la CS aussi). En tout cas ce serait un bon point de départ pour construire un contrôle qui répond exactement à ce que vous voulez.

Vous pouvez remplacer la méthode de rendu et utiliser des primitives qui donneront peut-être de meilleures performances; mais comme tout ce qui touche à la performance, j'essaierai d'abord l'approche ci-dessus qui est presque certainement assez bonne.