向 WPF Surface 应用程序添加音效
Posted
技术标签:
【中文标题】向 WPF Surface 应用程序添加音效【英文标题】:Adding sound effects to WPF Surface application 【发布时间】:2015-08-03 06:24:45 【问题描述】:我试图在我的 WPF Surface 应用程序中触摸/移动对象时播放声音,以描绘它已被选中或其移动。这是我尝试过的,但似乎不起作用。
SoundPlayerAction soundPlayerAction = new SoundPlayerAction();
soundPlayerAction.Source = new Uri(@"C:\Resources\Selection.wav", UriKind.RelativeOrAbsolute);
EventTrigger eventTrigger = new EventTrigger(TouchEnterEvent); // this is the event you want to trigger the sound effect.
eventTrigger.Actions.Add(soundPlayerAction);
我们将不胜感激任何反馈或想法。
【问题讨论】:
确定C:\Resources
是正确的路径?
是的,实际上它类似于@"C:\Users\hci\Desktop\N\TTools\TTool\Resources\Selection.wav。它似乎是正确的,因为我在其中有音频文件文件夹,我还在解决方案资源管理器的 Visual Studio 中添加了它。
【参考方案1】:
在您的项目中创建一个新文件夹并将其重命名为 SOUNDS,然后将您的声音文件插入其中并尝试以下操作:
SoundPlayerAction soundPlayerAction = new SoundPlayerAction();
soundPlayerAction.Source = new Uri(@"SOUNDS\Selection.wav", UriKind.RelativeOrAbsolute);
EventTrigger eventTrigger = new EventTrigger(TouchEnterEvent); // this is the event you want to trigger the sound effect.
eventTrigger.Actions.Add(soundPlayerAction);
Triggers.Add(eventTrigger); // Add this event trigger to Window.Triggers collection.
【讨论】:
【参考方案2】:C:\Resources\Selection.wav
显然不是声音文件的正确路径。
您应该在 Visual Studio 项目中创建一个名为“Resources”的文件夹,并将声音文件添加到该文件夹中。然后转到声音文件的属性并将其Build Action
设置为Resource
并将Copy to Output Directory
设置为Copy aways
或Copy if newer
。
现在您可以像这样通过相对 Uri 访问文件:
soundPlayerAction.Source = new Uri("Resources/Selection.wav", UriKind.Relative);
【讨论】:
这个方法我试过了,还是不行。声音不播放。我有一种感觉,也许我的事件触发器不合适?我想象它做的是每当触摸某物时,应该播放声音,但可能没有正确检测到触摸事件。【参考方案3】:我遇到了这个链接https://www.youtube.com/watch?v=nF-HYoTurc8 并稍微更改了我的代码并且声音有效:D
在我的 PreviewTouchDown 方法中,我添加了:
SoundPlayer soundPlayerAction = new SoundPlayer(TangramsTool.Properties.Resources.Selection);
soundPlayerAction.Play();
【讨论】:
以上是关于向 WPF Surface 应用程序添加音效的主要内容,如果未能解决你的问题,请参考以下文章
UwpDesktop!WPF也能开发Surface Dial
UwpDesktop!WPF也能开发Surface Dial