朋友们帮忙研究一下!音频直方图的动态效果!很有意思的哦!!!
朋友们,谁知道,比如类似播放器里的音频直方图,柱子高度随频率的改变其高度也随之增减频率的数据我们有,数据变化半秒一次。用vb怎样实现类似播放器里的音频
那样动感的效果,那个直方图怎样绘(类似一个个小方块的叠加哦!),还有其高度怎样随数据变化实现其动感
的效果哦!我觉得这个程序很有意思的!
大家有什么观点,想法,望一起讨论哦!
在下谢谢大家的支持!!!
Option Explicit Public Sub 显示频谱(obj1 As PictureBox, obj2 As PictureBox, data() As Long) 'obj1 目标对象 'obj2 频谱对象 'data() 当次频谱数据 Const MAX = 100 '谱柱数据最大值 Dim i As Long Dim kd As Long '谱柱宽度 Dim o As Long '谱柱数量 Dim x As Long, y As Long '谱柱左上角坐标 Dim H As Long '谱柱最大高度 o = UBound(data) '谱柱总数 H = obj1.ScaleHeight kd = obj1.ScaleWidth / (o + 1) '每根谱柱的宽度 obj1.Cls For i = 0 To o '读每个数据 If data(i) > MAX Then '去掉最大值,保证不出错 data(i) = MAX End If If data(i) > 0 Then '去掉最小值,保证不出错 x = i * kd y = H - data(i) / MAX * H obj1.PaintPicture obj2.Image, x, y, kd - 30, H - y, 0, y End If Next i End Sub Private Sub Command1_Click() '测试按钮 Dim i As Long Dim d(10) As Long For i = 0 To 10 '产生10个随机数据 d(i) = Int(Rnd() * 100) Next i Call 显示频谱(Picture1, Picture2, d()) '显示 End Sub Private Sub Form_Load() Const H = 45 '总高度 Const K = 30 '空位 ,因为显示时,会谥出1像素 '注意:picture1 和 picture2 的高度需要为一样的。 '制作样本 Dim i As Long Dim j As Long Dim k1 As Long k1 = Picture2.ScaleWidth For i = 0 To Picture2.ScaleHeight / H j = (i - 1) * H Picture2.Line (0, j)-(k1, j + H - K), , BF Next i End Sub Private Sub Timer1_Timer() Call Command1_Click End Sub