2010-11-08 11 views

Respuesta

35

Debido mySoundFile es una Stream, usted puede tomar ventaja de SoundPlayer 's constructor sobrecargado, que acepta un objeto Stream:

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

SoundPlayer Class Documentation (MSDN)

+1

Esto producirá una excepción en Windows CE, ya que no lo hará convierte automáticamente el recurso de un byte [] a una secuencia. Encontré que la siguiente respuesta funcionó en ese escenario. Dejándolo aquí para otros: http://stackoverflow.com/questions/1900707/how-to-play-audio-from-resource – Hagelt18

+0

En realidad, no necesitamos declarar una variable Stream separada;) – TomeeNS

+2

@TomeeNS: por supuesto , pero muestra a las personas el tipo de recurso y la sobrecarga del constructor 'SoundPlayer' que se utiliza. –

2

Necesita ser cauteloso sobre el recolector de basura liberando memoria utilizada por su sonido mientras el sonido sigue sonando. Si bien rara vez ocurre, cuando lo hace, solo estará jugando a la memoria aleatoria. Hay una solución para esto, completa con el código fuente para lograr lo que desea aquí: http://msdn.microsoft.com/en-us/library/dd743680(VS.85).aspx

Desplácese hasta el final, en la sección "Contenido de la comunidad".

0

Cuando tenga que agregar sonidos a su proyecto, lo hará al reproducir .wav archivo (s). Luego debe agregar el archivo (s) .wav de esta manera.

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 

Recuerde que usted tiene que escribir la ruta del archivo con barras oblicuas hacia delante (/) formato, no utilice barras invertidas (\) cuando se da una ruta de acceso al archivo, de lo contrario se obtener un error

También tenga en cuenta, si quieres otras cosas que suceden mientras está reproduciendo el sonido, puede cambiar my_wave_file.PlaySync(); con my_wave_file.PlayAsync();.

30

a) Bien, primero agregue el archivo de audio (.wav) al recurso del proyecto.

  1. Abra "Solution Explorer" desde la barra de herramientas de menú ("VIEW") o simplemente presione Ctrl + Alt + L.
  2. Haga clic en la lista desplegable de "Propiedades".
  3. Luego seleccione "Resource.resx" y presione enter.

open project resource

  1. Ahora seleccione "Audio" de la lista de cuadro combinado.

add audio files to resource

  1. A continuación, haga clic en "Agregar recurso", elegir los archivos de audio (.wav) y haga clic en "Abrir".

browsing for audio files

  1. Seleccionar archivo de audio (s) y cambiar las propiedades de "persistencia" a "Embedded en Resx".

embedding audio files to resource

b) Ahora, acaba de escribir el código para reproducir el audio.

En este código, estoy reproduciendo audio en el evento de carga de formulario.

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(); 
     } 
    } 
} 

Eso es todo.
Hecho todo, ahora ejecute el proyecto (presione f5) y disfrute de su sonido.
Todo lo mejor. :)

+1

¡Exactamente lo que estaba buscando! Las fotos ayudaron mucho. ¿Sabes si puedo incrustar una fuente (como fontawesome) de esta manera para su uso en mi programa? –

+0

Cuando agrego un archivo wav, agrega un Resources2.Designer.cs que parece ser un duplicado de Resources.Designer.cs, lo que me da conflictos. Esto acaba de comenzar a suceder. ¿Alguna idea de lo que podría estar pasando? https://www.screencast.com/t/xAVpE5v6b0 – Matt

Cuestiones relacionadas