向 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 awaysCopy 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

以编程方式向 WPF 中的文件添加写入权限

WPF怎么能跨进程通信

如何解决`E Qt JAVA:找不到Surface 1-通过意图恢复到Qt @ android应用程序时出错?

WPF软件开发系统之二——水环境检测Surface触摸屏软件开发