2024年3月23日发(作者:)

C#下利用DirectSound实现声音播放

第1步:下载并安装DirectX 9 SDK

000

000

DirectX 9 SDK下载地址:/directx/sdk/ ,目前最新版本是2006年8

月,下载包500MB多。

000

第2步:建立C#应用程序

新建一个C#的windows应用程序,名称这里输mydirectXtest。

00

00

解决方案管理器里,右击项目,“添加引用”,选中DirectX和DirectSound,如下图:

000

在里面添加:

000

using X;

using Sound;

往Form1上面拉一个Label和一个Button,在Button onclick事件里面写入:

000

000

000

// 建立声音设备

00

00

dev =

new ();

perativeLevel(this,

00

00

000

);

// 为声音建立二级缓冲区

00

try

...{

000

00

00

aryBuffer snd =

new aryBuffer(

"../../", dev);

// 播放声音

00

000

00

000

(0, t);

}

000

catch (Exception ex)

...{

000

00

000

= ng();

}

dev = new (); —

000

—建立device的类;

000

perativeLevel(this, ); ——

设置CooperativeLevel。因为Windows是多任务的系统,设备不是独占的,所以在使用设备

前要为这个设备设置CooperativeLevel。调用Device的SetCooperativeLevel方法:其中,第

一个参数是一个Control;第二个参数是个枚举类型,用来设置优先级的。

00

SecondaryBuffer snd = new

aryBuffer("../../", dev); —— 开辟缓冲

区。声音设备有个自己的缓冲区,叫主缓冲区。系统中,一个设备有唯一的主缓冲区。由于

windows是多任务的,所以可以有几个程序同时利用一个设备播放声音,每个程序都自己开

辟一个二级缓冲区,放自己的声音。

这里需要注意播放声音的路径,一开始初学者容易把wav声音放到项目里面,在

SecondaryBuffer里面直接写“”,调试是会显示“应用程序错误”。因为调试

000

的默认文件夹是Debug,需要的声音文件应该放到Debug目录下,用“”的

格式;或者放在项目下面,用“../../”的格式。很傻的错误吧。

00

这样,调试程序,按button就会播放声音了。全部代码如下:

000

000

using System;

000

using c;

using entModel;

using ;

using g;

using ;

000

00

000

000

00

using ;

000

using X;

using Sound;

namespace mydirectXtest

000

000

00

...{

public partial class Form1 : Form

00

000

...{

00

public Form1()

00

...{

InitializeComponent();

}

00

000

00

private void button1_Click(object sender, EventArgs e)

...{

// 建立声音设备

00

00

00

dev =

perativeLevel(this,

000

new ();

00

000

000

}

}

}

0

);

000

// 为声音建立二级缓冲区

00

try

000

...{

00

aryBuffer snd =

000

new aryBuffer(

000

"../../", dev);

000

// 播放声音

00

(0, t);

}

000

catch (Exception ex)

000

...{

00

= ng();

000

}

000

000

000

00