我已知道怎样绘制wave文件(*.wav)的波形图,但对于大文件,如果把每一个数据值都绘制出来则要很长时间。
但是CoolEdit,SoundForge这一类声音编辑软件把每一个数据值都绘制出来了,而且它能在很短时间内绘制出来?为什么?
请各位知道的大侠解释,谢谢!

解决方案 »

  1.   

    你用过PolyLine吗?双缓冲应该没问题吧。
      

  2.   

    谢谢!
    PolyLine用过,双缓冲也用过,DirectDraw也用过,当wave文件大到180M,我绘制这个波形需137秒,然而CoolEdit,SoundForge这一类声音编辑软件只要十几二十秒,而且它们把每一个数据值都绘制出来了,
      

  3.   

    以上几位大侠的解决思路我想应该比较对路,我将实践一把。
    ------dirdirdir3(风) :优化一下代码,特别是在循环里面的。会差非常多的。
    我对在循环里面优化代码没有经验,请问是不是用汇编语言?还是采用其他方式,能否给些例子?谢谢!
      

  4.   

    学会从机器指令的角度考虑。另外,像CoolEdit这种级别的软件,开发实力雄厚,你比不上它也情有可原。
    尤其在关键技术上,如果让你随便问问就搞定,那Cooledit的老板该哭了CoolEdit核心部分完全可能是使用汇编编写的,甚至可能利用了MMX或者SSE指令集。像X86这种CISC架构,有些指令不常见但是用得恰到好处会有意想不到的效果。
      

  5.   

    谢谢各位对这个问题的关注!180M的WAVE文件很容易得到:你在Cool Edit Pro 这类音频编辑软件中新建一个wav文件,然后不断地从另一个打开的波形文件向其中复制、粘贴,软后保存。我是这样做的实验,以至于我认为是每个点都画出来了:
    先在CoolEdit中把波形中某一个点的分贝值拖到最大,保存你修改过的这个文件,你再次用该软件打开这个文件,这时你可以再次看你刚才放大了分贝值的那个波峰,位置一点都没改变,这说明它自身并没有只取部分来画,也不是缩放时画的。
    我在用另一音频编辑软件SoundForge打开这个文件,这时你看到的与CoolEdit中一模一样,你仍能看到你刚才放大的那个点波峰,位置也没变,这两个软件不是一个人写得吧?
      

  6.   

    因工作原因,两个多星期没上这里,今天来这里,见yuanss71(yuanss71)大侠提供了一条锦囊妙计,恕我驽钝,我对“坐标映射处理有相同的数据点”具体怎样做不太了解?请yuanss71(yuanss71)或其他大侠解释一下具体怎样做?或者解释一下其原理,或提供一些网上资料,谢谢!