朋友们帮忙研究一下!音频直方图的动态效果!很有意思的哦!!!
朋友们,谁知道,比如类似播放器里的音频直方图,柱子高度随频率的改变其高度也随之增减频率的数据我们有,数据变化半秒一次。用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
