随笔 - 2146  文章 - 19 评论 - 11846 阅读 - 1267万

01 2011 档案
在 Delphi 下使用 DirectSound (18): 3D 特效
摘要:DirectSound 3D 特效相关接口: IDirectSound3DBuffer8、IDirectSound3DListener8.IDirectSound3DBuffer8 是声源, 它可以有一个或多个; IDirectSound3DListener8 是听者, 它只能有一个.IDirectSound3DBuffer8 通过 QueryInterface() 从次缓冲获取, 要求该次缓冲建立时必须指定 DSBCAPS_CTRL3D;IDirectSound3DListener8 通过 QueryInterface() 从主缓冲区获取, 该主缓冲区建立时也必须指定 DSBCAPS_CTR 阅读全文
posted @ 2011-01-28 00:15 万一 阅读(3834) 评论(3) 推荐(2) 编辑
使用 BinToHex() 把 TBytes 转换为十六进制字符串 - 回复 "梧桐栖凤" 的问题
摘要:{函数}function BytestoHexString(ABytes: TBytes; len: Integer): AnsiString;begin SetLength(Result, len*2); BinToHex(@ABytes[0], PAnsiChar(Result), len);end;{测试}procedure TForm1.FormCreate(Sender: TObje... 阅读全文
posted @ 2011-01-27 18:17 万一 阅读(8037) 评论(2) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (17): 频率均衡效果器 IDirectSoundFXParamEq8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-24 21:04 万一 阅读(1974) 评论(4) 推荐(1) 编辑
在 Delphi 下使用 DirectSound (16): 环境混响效果器 IDirectSoundFXI3DL2Reverb8
摘要:IDirectSoundFXI3DL2Reverb8 效果器除了拥有 GetAllParameters()、SetAllParameters() 外, 还比其它效果器多出了四个方法:GetQuality()、SetQuality()、GetPreset()、SetPreset().测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-24 17:25 万一 阅读(1658) 评论(2) 推荐(1) 编辑
在 Delphi 下使用 DirectSound (15): 测试混响效果器 IDirectSoundFXWavesReverb8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-23 23:55 万一 阅读(1470) 评论(4) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (14): 测试镶边效果器 IDirectSoundFXFlanger8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-23 23:29 万一 阅读(1263) 评论(0) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (13): 测试回声效果器 IDirectSoundFXEcho8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-23 23:16 万一 阅读(1340) 评论(1) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (12): 测试失真效果器 IDirectSoundFXDistortion8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-23 22:54 万一 阅读(1099) 评论(0) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (11): 测试压缩效果器 IDirectSoundFXCompressor8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-22 21:26 万一 阅读(1122) 评论(10) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (10): 测试合唱效果器 IDirectSoundFXChorus8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-21 23:30 万一 阅读(1498) 评论(10) 推荐(1) 编辑
如何把一个字符串填充到一个无类型的指针 - 回复 "豪杰的爸爸" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2008/11/08/1329543.html#2016234 阅读全文
posted @ 2011-01-21 17:43 万一 阅读(2006) 评论(1) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (9): 效果器初步及 IDirectSoundFXGargle8 效果器
摘要:只有使用 IDirectSoundBuffer8 的次缓冲区才能设置"特效", 主缓冲区主要负责的是混音和处理 3D 效果.IDirectSoundBuffer8(非 IDirectSoundBuffer) 支持以下效果器:使用步骤:1、通过 IDirectSoundBuffer8 的 SetFX() 方法关联特效, 这个过程主要是给 SetFX() 方法的参数准备 TDSEffectDesc 结构数组;2、通过 IDirectSoundBuffer8 的 GetObjectInPath() 方法获取特效对象;3、通过特效对象的 SetAllParameters() 方法设置特效参数.9 个特 阅读全文
posted @ 2011-01-21 15:53 万一 阅读(2148) 评论(2) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (8): IDirectSound8.DuplicateSoundBuffer() 与 IDirectSoundBuffer.GetStatus()
摘要:IDirectSoundBuffer.GetStatus() 用于获取缓冲区的当前状态, 譬如是否正在播放、是否指定为循环播放等等.IDirectSound8.DuplicateSoundBuffer() 是通过根据已存在的缓冲区建立缓冲区副本, 这类似引用; 通过它可以让同一个声音交叉播放.复制缓冲区不能复制主缓冲区.示例: 阅读全文
posted @ 2011-01-20 11:41 万一 阅读(2420) 评论(4) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (7): 播放资源文件中的 Wave 数据
摘要:首先要修改前面自定义的 ReadWaveFile 单元, 给它增加一个 OpenResource() 方法以直接读取资源文件中的 "WAVE" 数据;为避免混淆, 把单元名 ReadWaveFile 同时改为 ReadWave; 类名 TReadWaveFile 改为 TReadWave.下面的例子如图载入了三个 Wave 文件到资源:本例可充分体现 DirectSound 可同时播放多个声音的特点; 实现代码:本节演示录像: http://files.cnblogs.com/del/DirectSound_7.rar 阅读全文
posted @ 2011-01-19 16:44 万一 阅读(2068) 评论(23) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (6): 按文件自己的格式(TWaveFormatEx)播放
摘要:这必须手动建立主缓冲区. 阅读全文
posted @ 2011-01-19 14:04 万一 阅读(1992) 评论(0) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (5): 获取或设置缓冲区的格式:
摘要:次缓冲区(或叫辅助缓冲区)尽管使用了波形文件自己的 TWaveFormatEx, 但最终播放的却只是 22050HZ 的 8 位立体声.因为次缓冲区最终要混入主缓冲区才播放, 可主缓冲区的缺省格式是 22050HZ 的 8 位立体声(这利于在不同应用程序之间的平滑切换).次缓冲区一旦建立, 其格式就无法修改了(无法使用缓冲区对象的 SetFormat() 方法); 好在主缓冲区可以重置格式.也就是说, 播放 44100HZ、16 位的 Wave 时, 如果不通过主缓冲修改格式则无法原声播放.要修改格式只能手动建立主缓冲区(我们无法使 DirectSound 自动建立的主缓冲区, 没有入口).手 阅读全文
posted @ 2011-01-19 13:12 万一 阅读(1971) 评论(4) 推荐(0) 编辑
把字节数组读入到流 - 回复 "巅枫" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2011/01/16/1936942.html#2012707 阅读全文
posted @ 2011-01-17 16:38 万一 阅读(3296) 评论(10) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (4): 设置音量、相位、播放频率和播放位置
摘要:通过 IDirectSoundBuffer 的 SetVolume、SetPan、SetFrequency、SetCurrentPosition 方法可以简单进行这些设置.同时 IDirectSoundBuffer 也有对应的 GetVolume、GetPan、GetFrequency、GetCurrentPosition 方法.关键的一点是如果能让缓冲区接受音量、相位和频率的设置, 必须在建立缓冲区时指定相应的标志.下面的常量说明了它们的取值范围:在上一个例子中, 最占篇幅的就是那两个函数; 为了更方便使用, 把它们做在了一个 TReadWaveFile 类里:测试程序用到了四个 Butto 阅读全文
posted @ 2011-01-16 22:51 万一 阅读(4072) 评论(15) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (3): 播放第一个 Wave 文件
摘要:建立 IDirectSound8 对象后, 首先要通过其 SetCooperativeLevel() 方法设置协作优先级;因为其它应用程序有可能同时使用该设备(声卡), 这是必需的步骤.然后通过 IDirectSound8.CreateSoundBuffer() 方法建立缓冲区, 这个过程主要是填写 TDSBufferDesc 结构;填写 TDSBufferDesc 结构时又同时需要 TWaveFormatEx 结构的指针, 这个 TWaveFormatEx 结构我们会直接从 Wave 文件中读取.除非优先级设置为 DSSCL_WRITEPRIMARY, 程序至少应该有一个次缓冲区(这同时会自 阅读全文
posted @ 2011-01-15 23:43 万一 阅读(3714) 评论(8) 推荐(0) 编辑
如何使用系统级热键捕捉当前窗口保存为 png 图片 - 回复 "巅枫" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2009/02/16/1392049.html#2011187程序运行后, F8 可保存 bmp, F9 可保存 png; 测试保存目录在 C:\temp 阅读全文
posted @ 2011-01-15 13:23 万一 阅读(2832) 评论(1) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (2): 查看设备性能
摘要:使用 DirectSound 前应先建立 IDirectSound8 对象(之前的版本是 IDirectSound):然后通过 IDirectSound8 对象(它代表着一个播放设备)创建缓冲区, 以写入声音信息.这里的缓冲区分 "主缓冲区" 和 "次缓冲区". 主缓冲区只有一个; 次缓冲区可以有多个, 以实现多个声音的同时播放.DirectSound 会尽量使用硬件(声卡)提供的缓冲区; 如果硬件不支持则只好使用系统内存做缓冲区, 但这样效率不及前者.通过 IDirectSound8.GetCaps() 方法可以获取指定设备的详细性能:查看默认设备性能的测试程序:查看所有设备性能的测试程序: 阅读全文
posted @ 2011-01-13 21:12 万一 阅读(2161) 评论(5) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (1): 枚举播放设备
摘要:现在的 Delphi(2010、XE) 已经自带了 DirectX 的相关单元(...\source\rtl\win\).这是常见的代码:在回调函数中直接使用窗体控件不好, 修改如下:获取更多信息: 阅读全文
posted @ 2011-01-12 20:26 万一 阅读(4421) 评论(11) 推荐(2) 编辑
学用 ASP.Net 之 System.Collections.Generic 下的容器类
摘要:Dictionary、KeyValuePair:SortedDictionary:SortedList:HashSet、SortedSet:List:LinkedList、LinkedListNode: 阅读全文
posted @ 2011-01-11 13:12 万一 阅读(2147) 评论(0) 推荐(1) 编辑
学用 ASP.Net 之 System.Array 类
摘要:成员:Array.AsReadOnly(): 阅读全文
posted @ 2011-01-10 16:31 万一 阅读(1472) 评论(0) 推荐(0) 编辑
学用 ASP.Net 之 System.Collections.Specialized.CollectionsUtil 类
摘要:通过 CollectionsUtil 创建或包装的 "键/值对" 类(实现 IDictionary 的), 可以忽略 Key 的大小写.主要成员:创建忽略大小写的 Hashtable:创建忽略大小写的 SortedList:包装一个 Hashtable 为忽略大小写: 阅读全文
posted @ 2011-01-08 21:59 万一 阅读(966) 评论(0) 推荐(0) 编辑
关于 OnMouseWheelDown、OnMouseWheelUp 等事件的简单例子 - 回复 "巅枫" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2009/10/28/1591380.html#2006425测试准备, 在空白窗体上添加 Memo1 和 Button1, 然后激活 Form1 的如下事件(巅枫同学关心的):OnMouseEnter、OnMouseLeave、OnMouseWheel、OnMouseWheelDown、OnMouseWheelUp, 还用到其 OnCreate 事件.然后根据如下测试代码, 一试便知: 阅读全文
posted @ 2011-01-08 14:10 万一 阅读(5020) 评论(10) 推荐(0) 编辑
学用 ASP.Net 之 System.Collections.Specialized.ListDictionary 类与 HybridDictionary 类
摘要:ListDictionary 和 HybridDictionary 都是类似哈希表的类. ListDictionary 适于存放少量数据(不超过 10 个元素).HybridDictionary 很灵活, 数据少是它使用 ListDictionary, 数据多时则自动改用哈希表(Hashtable).HybridDictionary 还能在构建时指定容量和是否不区分大小写.ListDictionary 与 HybridDictionary 有共同的成员: 阅读全文
posted @ 2011-01-07 23:26 万一 阅读(995) 评论(0) 推荐(0) 编辑
学用 ASP.Net 之 System.Collections.Specialized.OrderedDictionary 类
摘要:OrderedDictionary 相当于能用索引访问的哈希表.主要成员:练习: 阅读全文
posted @ 2011-01-07 23:14 万一 阅读(1427) 评论(0) 推荐(0) 编辑
学用 ASP.Net 之 System.Collections.Specialized.NameValueCollection 类
摘要:NameValueCollection 相当于 Key 和 Value 都是字符串的且能通过索引访问的哈希表.主要成员:其 Key 可为 null, 且可对应多个 Value:练习: 阅读全文
posted @ 2011-01-07 16:37 万一 阅读(2506) 评论(0) 推荐(0) 编辑
学用 ASP.Net 之 System.Collections.Specialized.StringDictionary 类
摘要:StringDictionary 相当于 Key 和 Value 都是字符串的哈希表.主要成员:简单练习: 阅读全文
posted @ 2011-01-07 15:20 万一 阅读(1026) 评论(0) 推荐(1) 编辑
学用 ASP.Net 之 System.Collections.Specialized.StringCollection 类
摘要:StringCollection 是专用于储存字符串的集合, 相当于字符串的动态数组.主要成员:简单测试: 阅读全文
posted @ 2011-01-07 14:50 万一 阅读(1514) 评论(0) 推荐(1) 编辑
学用 ASP.Net 之 System.Collections.Specialized.BitVector32 结构
摘要:BitVector32 结构只提供 32 位大小的储存空间(同 Int32), 通过它可以快速存取布尔值或小整数(譬如 7 以内或 15 以内的小整数等等).主要成员: 构建方法:数组式访问:分别访问每一个位:BitVector32.CreateMask():BitVector32.CreateSection():建立多个 Section:BitVector32.CreateSection() 返回的 BitVector32.Section 也是个结构体: 阅读全文
posted @ 2011-01-07 12:27 万一 阅读(1250) 评论(0) 推荐(0) 编辑
学用 ASP.Net 之 System.BitConverter 类
摘要:使用 BitConverter 类的一组静态方法可以把一个整数、浮点数、字符或布尔值转换成一个 Byte[], 当然也可逆转.主要成员: Int - Byte[] - Int:Double - Byte[] - Int64: 阅读全文
posted @ 2011-01-06 18:10 万一 阅读(2472) 评论(0) 推荐(1) 编辑
学用 ASP.Net 之 System.Collections.ArrayList 类
摘要:ArrayList 是 .Net 的动态数组.主要成员:元素值可以是不同类型、可重复、可为 null:ArrayList.Repeat()、AddRange() 及遍历:GetRange()、SetRange():翻转与排序:插入与删除:IndexOf()、LastIndexOf():BinarySearch():FixedSize()、ReadOnly()、IsFixedSize、IsReadOnly: 阅读全文
posted @ 2011-01-06 13:42 万一 阅读(4931) 评论(0) 推荐(1) 编辑
学用 ASP.Net 之 System.Collections.SortedList 类
摘要:SortedList 是能自动排序的 "Key/Value" 列表类(排序是依据 Key), 并能通过索引访问元素.它像是 Hashtable(哈希表)的升级, 它们的每个元素都是视为一个 DictionaryEntry(Key/Value) 结构体.正因为它比 Hashtable 多出了排序和索引, 所以效率不及 Hashtable.主要成员:元素会被自动排序:取值:改值:删除元素与获取索引:Capacity、Count 与 TrimToSize():分别获取键集合、值集合、键列表、值列表: 阅读全文
posted @ 2011-01-05 22:09 万一 阅读(1586) 评论(0) 推荐(0) 编辑
学用 ASP.Net 之 System.Collections.Queue 与 Stack 类
摘要:Queue(队列)是先进先出的集合; Stack(堆栈)是后进先出的集合.Queue 的主要成员:Stack 的主要成员:Queue 测试:Stack 测试: 阅读全文
posted @ 2011-01-05 16:31 万一 阅读(1934) 评论(3) 推荐(1) 编辑
学用 ASP.Net 之 System.Collections.BitArray 类
摘要:常用成员:练习: 阅读全文
posted @ 2011-01-05 16:19 万一 阅读(1076) 评论(0) 推荐(0) 编辑
学用 ASP.Net 之 System.Collections.Hashtable 类与 DictionaryEntry 结构
摘要:DictionaryEntry 是包含 Key / Value 一对值的简单结构;Hashtable(哈希表)是一组 Key / Value 的集合, 准确地讲是一组 DictionaryEntry 的集合. DictionaryEntry 简例:Hashtable 成员:入手练习:遍历:Contains()、ContainsKey()、ContainsValue():Keys、Values: 阅读全文
posted @ 2011-01-05 00:19 万一 阅读(3627) 评论(1) 推荐(1) 编辑
学用 ASP.Net 之 System.TimeSpan 结构
摘要:TimeSpan 表示一个时间间隔, 如:其默认的字符串格式:成员:构建对象:Parse():属性测试:Duration()、Negate():格式化输出: 阅读全文
posted @ 2011-01-04 14:13 万一 阅读(3149) 评论(0) 推荐(1) 编辑
学用 ASP.Net 之 System.DateTime 结构
摘要:成员:常用的构造函数:属性测试:AddDays():DateTime.Parse():转换与重建:DateTime.DaysInMonth():ToString():GetDateTimeFormats(): 阅读全文
posted @ 2011-01-03 21:07 万一 阅读(1399) 评论(0) 推荐(2) 编辑
学用 ASP.Net 之 System.Math 类
摘要:成员:练习: 阅读全文
posted @ 2011-01-03 14:58 万一 阅读(1616) 评论(2) 推荐(0) 编辑
学用 ASP.Net 之 System.Random 类
摘要:成员:构造函数:练习: 阅读全文
posted @ 2011-01-03 10:49 万一 阅读(1935) 评论(0) 推荐(0) 编辑
学用 ASP.Net 之 System.Char 结构
摘要:成员:GetNumericValue():ConvertFromUtf32()、ConvertToUtf32():GetUnicodeCategory(): 阅读全文
posted @ 2011-01-02 22:42 万一 阅读(1712) 评论(0) 推荐(1) 编辑
学用 ASP.Net 之 "字符串" (6): StringInfo 类
摘要:学完这个类没感到它会有什么用处, 同样的操作都不如在 string 类里方便, 还要 using System.Globalization;主要成员:构造函数及属性:SubstringByTextElements() 方法:三个静态方法: 阅读全文
posted @ 2011-01-02 21:54 万一 阅读(1165) 评论(1) 推荐(0) 编辑
学用 ASP.Net 之 "字符串" (5): StringBuilder 类
摘要:StringBuilder 类存在的理由是: 在对字符串增删改时, 比 string 类更快; 更快的原因是无须像 string 一样反复地释放和重建.但它会在需要时重新分配内存, 如果把需要的内存预制好, 它会更快.StringBuilder 的属性与方法:构造函数的 6 种重载:练习: 阅读全文
posted @ 2011-01-02 15:51 万一 阅读(1427) 评论(0) 推荐(1) 编辑



点击右上角即可分享
微信分享提示