Cześć błagam o pomoc, bo już kompletnie nie mam pomysłu jak to rozwiązać.
Chodzi konkretnie o odtwarzanie dźwięku w aplikacji, korzystając z zasobów.
Odtwarzać chce dźwięki .wav jednak problem jest gdy chce to robić w funkcji, której jako parametr podaje nazwę odtwarzanego pliku.
W przypadku funkcji ZlaOdp sprawa jest prosta. Ustawiam strumień na odpowiedni zasób - w tym przypadku dźwięk Niestety.wav i wszystko gra jak należy.
public void ZlaOdp(string zadanie, string przyklad, string imie, string nazwisko, string badanie)
{
player.Stop();
player.Stream = global::Projekt.Properties.Resources.Niestety;
player.Load();
player.Play();
using (StreamWriter writer = new StreamWriter("C://Badania/" + imie + nazwisko +"_" + badanie+".txt", true))
{
writer.WriteLine(zadanie + " " + przyklad + "Niepoprawna odpowiedź " + DateTime.Now);
writer.Close();
}
WindowZlaOdp windowzlaodp = new WindowZlaOdp();
windowzlaodp.ShowDialog();
}
jednak w innej funkcji chciałabym podawać nazwę pliku jako parametr. Próbowałam tego na wiele sposobów, ale koniecznie chciałabym zrobić przez zasoby, a nie np. przez SoundLocation (nie odtwarza się wtedy na innym komputerze..)
Aktualnie mam napisaną funkcję tak, jednakże co chwilę to zmieniam i już się pogubiłam... Teraz całkiem wywala mi błąd:
The wave header is corrupt
public void Glosnik(string plik)
{
dzwiek = "::global.MojaKontrolka.Propertis.Resources." + plik;
byte[] data = Encoding.ASCII.GetBytes(dzwiek);
MemoryStream stream = new MemoryStream(data, 0, data.Length);
stream.Position = 0;
player.Stream = null;
player.Stream = stream;
player.Load();
player.Play();
}
Przy takim rozwiązaniu nie wyskakuje błąd, jednak zamiast mojego dźwięku, słychać dźwięk systemowy... :(
public void Glosnik(string plik)
{
dzwiek = "global::MojaKontrolka.Properties.Resources." + plik;
player.Stop();
assembly = Assembly.GetExecutingAssembly();
player = new SoundPlayer(assembly.GetManifestResourceStream(dzwiek));
player.Play();
}
Nie proszę o pomoc.. ja o nią błagam :)
Ktoś pomoże?