Guide C# – Integrare le DirectX nel Framework .NET

volevo introdurre un attimo questo discorso per poi approfondirlo magari più avanti, quando anche io ne sarò pienamente consapevole del pieno utilizzo smile emoticon scherzi a parte, mi è capitato per un altro progetto di dover lavorare con file multimediali in un progetto in c#, solo che non avevo voglia di utilizzare oggetti com vecchi di 15 anni per farlo e quindi ho deciso di affidarmi alle directx che, nonostante possano indurre a qualche dubbio non sono assolutamente difficili da usare e per di più hanno il pregio di ottimizzare le risorse in base all’hardware sottostante. in particolare a me è capitato di voler far suonare più file musicali (che siano stream di rete o file sull’hard disk è indifferente), magari associando ad ognuno una particolare combinazione di tasti. per fare questo ho trovato molto di aiuto il namespace AudioVideoPlayback, disponibile tra tutti gli altri del pacchetto di DirectX SDK.

Per cominciare dobbiamo appunto scaricare l’SDK delle directx più recente, io lavorando ancora su sistema operativo XP ho scaricato l’SDK di novembre 2007 delle directx 9c disponibile sul sito microsoft.

Scarichiamo il pacchetto di appena 427Mb (!!!) da qui: http://www.microsoft.com/

Finito il download avviamo l’installazione e accertiamoci di fare installare l’estensione per Visual Studio .NET:

dxsdk2007

Attendiamo con pazienza il termine dell’installazione smile emoticon

A questo punto siamo pronti per avviare un nuovo progetto in Visual Studio .NET. Creiamo perciò una classe (ad esempio Musica) nella quale andremo ad inserire nei riferimenti del progetto la libreria Microsoft.DirectX.AudioVideoPlayback. All’interno della classe appena creata andiamo a inserire un’istanza della classe Audio appartenente alla libreria appena referenziata. Questa classe contiene tutto ciò di cui abbiamo bisogno per fare suonare un qualsiasi file audio del quale siano installati i codec ed in più avremo la possibilità di non doverci preoccupare di altro perchè faranno tutto le DirectX. Sono infatti presenti i metodi Play, Pause e Stop (che non sto a spiegare smile emoticon), ed in più possiamo conoscere la posizione corrente del play ed effettuare il seek ad una qualsiasi posizione nello stream. Sì, dello stream, perchè la classe Audio accetta nel costruttore sia il nome di un file ma anche un’oggetto Stream, il che significa che potremo andare ad inserire ad esempio anche uno stream di rete senza nessun problema smile emoticon

l’unico problema che ho riscontrato avviene per un conflitto che a quanto sembra non è stato ancora risolto tra il loader lock del sistema operativo ed i controlli del debug di visual studio. per eliminare la fastidiosa eccezione andiamo nel menu debug -> exceptions e poi in managed debugging assistants e deselezioniamo loader lock. dovremmo ora riuscire a far partire l’audio senza nessun problema smile emoticon

magari prossimamente inserirò qualche riga di codice per aiutare chi non è esperto di c#.

This entry was posted in Linguaggi .Net, Programmazione, Videogiochi, Web e Web 2.0 and tagged , , , , , , , , , , , , , , , , , . Bookmark the permalink.

2 Responses to Guide C# – Integrare le DirectX nel Framework .NET

  1. Andrea says:

    Ciao, sono uno studente che è all’inizio del suo studio di informatica, ho provato a fare un semplicissimo programma per csharp (la tastiera non mi lascia fare il cancelletto) due pulsanti, uno per caricare il file e uno per fare eseguire il file, dopo caricato un mp3, se premo il tasto play mi da errore, ecco il codice:


    using Microsoft.DirectX;
    using Microsoft.DirectX.AudioVideoPlayback;

    namespace lettore_mp3
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    string path = null;
    private void carica_Click(object sender, EventArgs e)
    {
    openFileDialog1.ShowDialog();
    path=openFileDialog1.FileName;
    }

    private void Play_Click(object sender, EventArgs e)
    {
    Audio.FromFile(path).Play();
    }
    }
    }

    come vedi è molto semplice, potresti dirmi qual’è l’errore? Grazie mille!

  2. Alex says:

    nel pulsante carica prova: path=openFileDialog1.FileName.ToString();
    non mi ricordo se e’ facoltativa o no ma tanto vale provare =)

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>