Salut à tous.
Je vais commencer par décrire une partie de mon projet, afin d'être le plus clair possible ^^
Je souhaite réaliser l'affichage du spectre d'un fichier son (au choix de l'utilisateur, ça sera généralement du wav, du mp3 ou du ogg) et proposer la possibilité de zoomer dessus, ainsi que de mettre des marqueurs (par ex : "fin de l'intro", ce genre de chose).
Après quelques recherches sur le net, j'ai trouvé une bibliothèque qui fait ça très bien : Bass http://www.un4seen.com/
A partir de cette bibliothèque, j'arrive à :
- afficher une waveform (le spectre) pour un fichier son donné. J'ai une méthode qui crée un Bitmap que je définis ensuite comme BackgroundImage d'une PictureBox ;
- poser des marqueurs avec une fonction qui prend en paramètre le temps (en secondes) où on pose le marqueur.
Il ne me manque plus qu'une fonctionnalité, c'est le zoom
Comme d'habitude, j'ai cherché sur Google et divers forums (dont celui-ci), mais je n'ai trouvé que des possibilités de zoom sur des images chargées depuis un fichier (ce qui n'est pas mon cas, et ne peut pas l'être).
Donc je me demandais si quelqu'un aurait des conseils à me donner pour réaliser un zoom sur ce spectre (voir même la solution, mais je sais qu'il faut pas trop en demander xD).
Pour avoir une idée de la fonctionnalité, je peux citer le logiciel Audacity, qui fait exactement ce que je veux niveau zoom. Il s'agit de la possibilité de zommer/dézoomer avec la molette de la souris, et lorsque l'on zoom sur l'image, une barre de scrolling horizontale apparait (la hauteur devant rester la même tout le temps, encore un petit détail chiant).
Si je résume, j'ai donc un spectre de fichier son chargé en BackgroundImage d'une PictureBox, et je souhaite faire un zoom dessus qui l'étirerait sans changer sa hauteur. On pourrait ensuite naviguer dans l'image étirée à l'aide d'une barre de scroll.
Merci pour toute l'aide que vous pourrez m'apporter, et n'hésitez pas à demander des détails si je n'ai pas été assez clair ^^
Edit : J'oubliais de préciser, je débute en C# donc la solution est peut-être évidente. Désolé si c'est le cas ^^
Partager