这是给directX初学者的教程,如果你是大虾,大可不必理会本文。

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

DirectX 9 SDK下载地址:http://msdn.microsoft.com/directx/sdk/ ,目前最新版本是2006年8月,下载包500MB多。

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

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

解决方案管理器里,右击项目,“添加引用”,选中DirectX和DirectSound,如下图:
建立第一个directX程序——在C#下利用DirectSound实现声音播放

在Form1.cs里面添加:

建立第一个directX程序——在C#下利用DirectSound实现声音播放using Microsoft.DirectX;
建立第一个directX程序——在C#下利用DirectSound实现声音播放
using Microsoft.DirectX.DirectSound;

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

建立第一个directX程序——在C#下利用DirectSound实现声音播放// 建立声音设备
建立第一个directX程序——在C#下利用DirectSound实现声音播放
Microsoft.DirectX.DirectSound.Device dev =
建立第一个directX程序——在C#下利用DirectSound实现声音播放    
new Microsoft.DirectX.DirectSound.Device();
建立第一个directX程序——在C#下利用DirectSound实现声音播放
建立第一个directX程序——在C#下利用DirectSound实现声音播放dev.SetCooperativeLevel(
this,
建立第一个directX程序——在C#下利用DirectSound实现声音播放  Microsoft.DirectX.DirectSound.CooperativeLevel.Normal);
建立第一个directX程序——在C#下利用DirectSound实现声音播放
建立第一个directX程序——在C#下利用DirectSound实现声音播放
// 为声音建立二级缓冲区
建立第一个directX程序——在C#下利用DirectSound实现声音播放
try
建立第一个directX程序——在C#下利用DirectSound实现声音播放
{
建立第一个directX程序——在C#下利用DirectSound实现声音播放    Microsoft.DirectX.DirectSound.SecondaryBuffer snd 
=
建立第一个directX程序——在C#下利用DirectSound实现声音播放    
new Microsoft.DirectX.DirectSound.SecondaryBuffer(
建立第一个directX程序——在C#下利用DirectSound实现声音播放      
"../../NewDrums.wav", dev);
建立第一个directX程序——在C#下利用DirectSound实现声音播放
建立第一个directX程序——在C#下利用DirectSound实现声音播放    
// 播放声音
建立第一个directX程序——在C#下利用DirectSound实现声音播放
    snd.Play(0, Microsoft.DirectX.DirectSound.BufferPlayFlags.Default);
建立第一个directX程序——在C#下利用DirectSound实现声音播放}

建立第一个directX程序——在C#下利用DirectSound实现声音播放
catch (Exception ex)
建立第一个directX程序——在C#下利用DirectSound实现声音播放
{
建立第一个directX程序——在C#下利用DirectSound实现声音播放    label1.Text 
= ex.ToString();
建立第一个directX程序——在C#下利用DirectSound实现声音播放}

 

Microsoft.DirectX.DirectSound.Device dev = new 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声音放到项目里面,在SecondaryBuffer里面直接写“NewDrums.wav”,调试是会显示“应用程序错误”。因为调试的默认文件夹是Debug,需要的声音文件应该放到Debug目录下,用“NewDrums.wav”的格式;或者放在项目下面,用“../../NewDrums.wav”的格式。很傻的错误吧。

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

建立第一个directX程序——在C#下利用DirectSound实现声音播放using System;
建立第一个directX程序——在C#下利用DirectSound实现声音播放
using System.Collections.Generic;
建立第一个directX程序——在C#下利用DirectSound实现声音播放
using System.ComponentModel;
建立第一个directX程序——在C#下利用DirectSound实现声音播放
using System.Data;
建立第一个directX程序——在C#下利用DirectSound实现声音播放
using System.Drawing;
建立第一个directX程序——在C#下利用DirectSound实现声音播放
using System.Text;
建立第一个directX程序——在C#下利用DirectSound实现声音播放
using System.Windows.Forms;
建立第一个directX程序——在C#下利用DirectSound实现声音播放
建立第一个directX程序——在C#下利用DirectSound实现声音播放
using Microsoft.DirectX;
建立第一个directX程序——在C#下利用DirectSound实现声音播放
using Microsoft.DirectX.DirectSound;
建立第一个directX程序——在C#下利用DirectSound实现声音播放
建立第一个directX程序——在C#下利用DirectSound实现声音播放
建立第一个directX程序——在C#下利用DirectSound实现声音播放
namespace mydirectXtest
建立第一个directX程序——在C#下利用DirectSound实现声音播放
{
建立第一个directX程序——在C#下利用DirectSound实现声音播放    
public partial class Form1 : Form
建立第一个directX程序——在C#下利用DirectSound实现声音播放    
{
建立第一个directX程序——在C#下利用DirectSound实现声音播放        
public Form1()
建立第一个directX程序——在C#下利用DirectSound实现声音播放        
{
建立第一个directX程序——在C#下利用DirectSound实现声音播放            InitializeComponent();
建立第一个directX程序——在C#下利用DirectSound实现声音播放        }

建立第一个directX程序——在C#下利用DirectSound实现声音播放
建立第一个directX程序——在C#下利用DirectSound实现声音播放        
private void button1_Click(object sender, EventArgs e)
建立第一个directX程序——在C#下利用DirectSound实现声音播放        
{
建立第一个directX程序——在C#下利用DirectSound实现声音播放
建立第一个directX程序——在C#下利用DirectSound实现声音播放            
// 建立声音设备
建立第一个directX程序——在C#下利用DirectSound实现声音播放
            Microsoft.DirectX.DirectSound.Device dev =
建立第一个directX程序——在C#下利用DirectSound实现声音播放                
new Microsoft.DirectX.DirectSound.Device();
建立第一个directX程序——在C#下利用DirectSound实现声音播放
建立第一个directX程序——在C#下利用DirectSound实现声音播放            dev.SetCooperativeLevel(
this,
建立第一个directX程序——在C#下利用DirectSound实现声音播放              Microsoft.DirectX.DirectSound.CooperativeLevel.Normal);
建立第一个directX程序——在C#下利用DirectSound实现声音播放
建立第一个directX程序——在C#下利用DirectSound实现声音播放            
// 为声音建立二级缓冲区
建立第一个directX程序——在C#下利用DirectSound实现声音播放
            try
建立第一个directX程序——在C#下利用DirectSound实现声音播放            
{
建立第一个directX程序——在C#下利用DirectSound实现声音播放                Microsoft.DirectX.DirectSound.SecondaryBuffer snd 
=
建立第一个directX程序——在C#下利用DirectSound实现声音播放                
new Microsoft.DirectX.DirectSound.SecondaryBuffer(
建立第一个directX程序——在C#下利用DirectSound实现声音播放                  
"../../NewDrums.wav", dev);
建立第一个directX程序——在C#下利用DirectSound实现声音播放
建立第一个directX程序——在C#下利用DirectSound实现声音播放                
// 播放声音
建立第一个directX程序——在C#下利用DirectSound实现声音播放
                snd.Play(0, Microsoft.DirectX.DirectSound.BufferPlayFlags.Default);
建立第一个directX程序——在C#下利用DirectSound实现声音播放            }

建立第一个directX程序——在C#下利用DirectSound实现声音播放            
catch (Exception ex)
建立第一个directX程序——在C#下利用DirectSound实现声音播放            
{
建立第一个directX程序——在C#下利用DirectSound实现声音播放                label1.Text 
= ex.ToString();
建立第一个directX程序——在C#下利用DirectSound实现声音播放            }

建立第一个directX程序——在C#下利用DirectSound实现声音播放
建立第一个directX程序——在C#下利用DirectSound实现声音播放        }

建立第一个directX程序——在C#下利用DirectSound实现声音播放    }

建立第一个directX程序——在C#下利用DirectSound实现声音播放}


from:http://blog.csdn.net/cutebab0888/article/details/1143310


相关文章:

  • 2021-11-15
  • 2021-11-14
  • 2021-12-18
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-05-30
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案