2010-11-08 11 views

Odpowiedz

35

Ponieważ mySoundFile jest Stream, można skorzystać z SoundPlayer „s przeciążony konstruktora, który akceptuje Stream obiektu:

System.IO.Stream str = Properties.Resources.mySoundFile; 
System.Media.SoundPlayer snd = new System.Media.SoundPlayer(str); 
snd.Play(); 

SoundPlayer Class Documentation (MSDN)

+1

Spowoduje to zgłoszenie wyjątku w Windows CE, ponieważ nie będzie automatycznie konwertuj zasób z bajtu [] na strumień. W tym scenariuszu działała następująca odpowiedź. Pozostawiając to innym: http://stackoverflow.com/questions/1900707/how-to-play-audio-from-resource – Hagelt18

+0

Nie musimy zadeklarować osobnej zmiennej Stream;) – TomeeNS

+2

@TomeeNS: Oczywiście , ale pokazuje ludziom rodzaj zasobu i przeciążenie użytego konstruktora 'SoundPlayer'. –

2

trzeba być ostrożnym garbage collector zwalniając pamięć używana przez twój dźwięk podczas odtwarzania dźwięku. Chociaż rzadko się zdarza, kiedy to nastąpi, po prostu odtwarzasz losową pamięć. Jest na to rozwiązanie, wraz z kodem źródłowym do osiągnięcia tego, co chcesz: http://msdn.microsoft.com/en-us/library/dd743680(VS.85).aspx

Przewiń do samego dołu, w sekcji "Treści społeczności".

0

Gdy musisz dodać dźwięki do swojego projektu, zrobisz to, odtwarzając plik (y) .wav. Następnie musisz dodać plik (i) w ten sposób.

using System.Media; //write this at the top of the code 

    SoundPlayer my_wave_file = new SoundPlayer("F:/SOund wave file/airplanefly.wav"); 
    my_wave_file.PlaySync(); // PlaySync means that once sound start then no other activity if form will occur untill sound goes to finish 

Pamiętaj, że musisz napisać ścieżkę do pliku z ukośniki (/) format, nie używaj powrotem tnie (\) przy podawaniu ścieżki dostępu do pliku, w przeciwnym razie będziesz dostaję błąd.

Pamiętaj też, że jeśli chcesz, aby inne rzeczy miały miejsce podczas odtwarzania dźwięku, zmień my_wave_file.PlaySync(); na my_wave_file.PlayAsync();.

30

a) OK, najpierw dodaj plik audio (.wav) do zasobu projektu.

  1. Otwórz "Solution Explorer" z paska narzędzi menu ("VIEW") lub po prostu naciśnij Ctrl + Alt + L.
  2. Kliknij na rozwijaną listę "Właściwości".
  3. Następnie wybierz "Resource.resx" i naciśnij enter.

open project resource

  1. Teraz wybierz "Audio" z listy ComboBox.

add audio files to resource

  1. Następnie kliknij na "Dodaj zasób", wybierz pliki audio (.wav) i kliknij "Otwórz".

browsing for audio files

  1. Wybierz plik (i) oraz zmiana "dźwięku" persistence właściwości "wbudowany w .resx".

embedding audio files to resource

b) Teraz wystarczy napisać ten kod, aby odtworzyć dźwięk.

W tym kodzie odtwarzam dźwięk podczas zdarzenia ładowania formularza.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

using System.Media; // at first you've to import this package to access SoundPlayer 

namespace WindowsFormsApplication1 
{ 
    public partial class login : Form 
    { 
     public login() 
     { 
      InitializeComponent(); 
     } 

     private void login_Load(object sender, EventArgs e) 
     { 
      playaudio(); // calling the function 
     } 

     private void playaudio() // defining the function 
     { 
      SoundPlayer audio = new SoundPlayer(WindowsFormsApplication1.Properties.Resources.Connect); // here WindowsFormsApplication1 is the namespace and Connect is the audio file name 
      audio.Play(); 
     } 
    } 
} 

To wszystko.
Wszystko gotowe, uruchom teraz projekt (naciśnij klawisz f5) i ciesz się dźwiękiem.
Wszystkiego najlepszego. :)

+1

Dokładnie to, czego szukałem! Zdjęcia bardzo pomogły. Czy wiesz, czy mogę w ten sposób osadzić czcionkę (np. Fontawesome) do wykorzystania w moim programie? –

+0

Kiedy dodaję plik WAV, dodaje on plik Resources2.Designer.cs, który wydaje się być duplikatem Resources.Designer.cs - co powoduje konflikty. To się właśnie zaczęło dziać. Jakieś pomysły, co może się wydarzyć? https://www.screencast.com/t/xAVpE5v6b0 – Matt

Powiązane problemy