站点图标 久久日记本

C#中资源文件里的音频文件如何引用?

QAQ

resource1.resx里面放了一首歌曲,添加控件window media player后,应该如何播放该音乐文件?URL=“----”;中填什么?

满意答案 
你直接就能在你的类里看到这个资源类:
resource1.url
提问人的追问   2010-03-27 13:19
说具体点啊
我在资源文件resource1.resx里放了一首歌:歌名是220.wav
应该怎么引用这首歌?
resource1.url这是什么意思啊????
回答人的补充   2010-03-27 13:56
你在resource1.resx 放了一个wav是什么意思? resx文件是一个xml文件,所以里面的值是键值对应的。
内部的数据都是如以下格式:
 <data name="wavUrl" xml:space="preserve">
    <value>220.wav</value>
  </data>

所以你取的时候就直接resource1.wavUrl就可以拿到value,也就是"220.wav"这个字符串了
回答人的补充   2010-03-27 14:57研究了下你的播放器,是不只持流播放的
但是如果你只能用这种播放器,又另一种解决方案我认为。
即:把资源文件里的音频文件转化为本地文件,然后播放就行了。
也就是说,每次用户用你这个内嵌的文件时,首先把二进制流文件转化为本地文件,临时存到本地磁盘中,然后当播放完毕的时候再删除
回答人的补充   2010-03-27 16:01完整播放代码:

string m_path = @"c: \\temp.wav";                                
            FileInfo m_FileInfo = new FileInfo(m_path);                   
            if (!m_FileInfo.Exists)                                      
            {
                using (FileStream fs = File.Create(m_path))
                {
                    fs.Write(Properties.Resource.音乐,0, Properties.Resource.音乐.Length);
                }
            }

axWindowsMediaPlayer1.URL = m_path;

axWindowsMediaPlayer1.Ctlcontrols.play();
回答人的补充   2010-03-27 16:11
最后 如果用户播放完毕,再把生成的临时文件删除就行了,你在 mediaplayer 的PlayStateChange方法里加:
if (e.newState == 1)
            {
                File.Delete(m_path);
            }
退出移动版