












这是给directX初学者的教程,如果你是大虾,大可不必理会本文。
第1步:下载并安装DirectX 9 SDK
DirectX 9 SDK下载地址:http://msdn.microsoft.com/directx/sdk/ ,目前最新版本是2006年8月,下载包500MB多。
第2步:建立C#应用程序
新建一个C#的windows应用程序,名称这里输mydirectXtest。
解决方案管理器里,右击项目,“添加引用”,选中DirectX和DirectSound,如下图:
在Form1.cs里面添加:
using Microsoft.DirectX;
using Microsoft.DirectX.DirectSound;
往Form1上面拉一个Label和一个Button,在Button onclick事件里面写入:
1
// 建立声音设备
2
Microsoft.DirectX.DirectSound.Device dev =
3
new Microsoft.DirectX.DirectSound.Device();
4
5
dev.SetCooperativeLevel(this,
6
Microsoft.DirectX.DirectSound.CooperativeLevel.Normal);
7
8
// 为声音建立二级缓冲区
9
try
10
{
11
Microsoft.DirectX.DirectSound.SecondaryBuffer snd =
12
new Microsoft.DirectX.DirectSound.SecondaryBuffer(
13
"../../NewDrums.wav", dev);
14
15
// 播放声音
16
snd.Play(0, Microsoft.DirectX.DirectSound.BufferPlayFlags.Default);
17
}
18
catch (Exception ex)
19
{
20
label1.Text = ex.ToString();
21
}
Microsoft.DirectX.DirectSound.Device(); ——建立device的类;dev.SetCooperativeLevel(this, Microsoft.DirectX.DirectSound.CooperativeLevel.Normal); ——设置CooperativeLevel。因为Windows是多任务的系统,设备不是独占的,所以在使用设备前要为这个设备设置CooperativeLevel。调用Device的SetCooperativeLevel方法:其中,第一个参数是一个Control;第二个参数是个枚举类型,用来设置优先级的。
SecondaryBuffer snd = new Microsoft.DirectX.DirectSound.SecondaryBuffer("../../NewDrums.wav", dev); —— 开辟缓冲区。声音设备有个自己的缓冲区,叫主缓冲区。系统中,一个设备有唯一的主缓冲区。由于windows是多任务的,所以可以有几个程序同时利用一个设备播放声音,每个程序都自己开辟一个二级缓冲区,放自己的声音。
这里需要注意播放声音的路径,一开始初学者容易把wav声音放到项目里面,在
里面直接写“NewDrums.wav”,调试是会显示“应用程序错误”。因为调试的默认文件夹是Debug,需要的声音文件应该放到Debug目录下,用“NewDrums.wav”的格式;或者放在项目下面,用“../../NewDrums.wav”的格式。很傻的错误吧。
这样,调试程序,按button就会播放声音了。全部代码如下:
Form1.cs:
1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Data;
5
using System.Drawing;
6
using System.Text;
7
using System.Windows.Forms;
8
9
using Microsoft.DirectX;
10
using Microsoft.DirectX.DirectSound;
11
12
13
namespace mydirectXtest
14
{
15
public partial class Form1 : Form
16
{
17
public Form1()
18
{
19
InitializeComponent();
20
}
21
22
private void button1_Click(object sender, EventArgs e)
23
{
24
25
// 建立声音设备
26
Microsoft.DirectX.DirectSound.Device dev =
27
new Microsoft.DirectX.DirectSound.Device();
28
29
dev.SetCooperativeLevel(this,
30
Microsoft.DirectX.DirectSound.CooperativeLevel.Normal);
31
32
// 为声音建立二级缓冲区
33
try
34
{
35
Microsoft.DirectX.DirectSound.SecondaryBuffer snd =
36
new Microsoft.DirectX.DirectSound.SecondaryBuffer(
37
"../../NewDrums.wav", dev);
38
39
// 播放声音
40
snd.Play(0, Microsoft.DirectX.DirectSound.BufferPlayFlags.Default);
41
}
42
catch (Exception ex)
43
{
44
label1.Text = ex.ToString();
45
}
46
47
}
48
}
49
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。