当前位置:编程学习 > VB >>

VB一个显示声卡频谱部分的代码帮我详细解读下。我想换成波形显示

'//  获得波形数据
'//
Private Sub CaptureWaveOutput()
    Dim lngPtr As Long

    ' 波形数据缓存中已经填满波形数据
    If m_inHdr.dwFlags And WHDR_DONE Then
       m_lngRetVal = waveInAddBuffer(m_hWaveIn, m_inHdr, Len(m_inHdr))
       If m_lngRetVal <> 0 Then
          ' 波形数据记录失败"
          Exit Sub
       End If
       ' 获得左右声道的波形采样数据
       lngPtr = m_inHdr.lpData
       ReDim Preserve m_InData(m_inHdr.dwBytesRecorded)
       CopyStructFromPtr m_InData(0), lngPtr, m_inHdr.dwBytesRecorded
       ' 画左右声道波形
       DrawWaveform
   End If
   
End Sub

'//
'// 画左右声道波形
'//
Private Sub DrawWaveform()
    On Error Resume Next
 
    Dim lOffset As Long
    Dim lUsage As Long
    Dim lIndex As Long
    Dim lPos As Long
    Dim picWidth As Long
    Dim picHeight As Long
    Dim perHeight As Long
        
    picWidth = Picture1.ScaleWidth
    picHeight = Picture1.ScaleHeight
    perHeight = ((picHeight - (m_CellSpace + 1)) / 3)
    lOffset = m_CellSpace
    For lIndex = 0 To m_BarCounts
        lUsage = (m_InData(lIndex) / 255) * picHeight
        For lPos = 0 To perHeight
            Picture1.Line (lOffset, lPos * 3)-(lOffset + m_CellWidth, lPos * 3 + 1), _
            IIf(lUsage >= 255 * (1 - lPos / perHeight), m_ForeColor, m_BackColor), BF
        Next
        lOffset = lOffset + m_CellWidth + m_CellSpace
    Next
    Picture1.Refresh
    
End Sub 
--------------------编程问答-------------------- 没有人帮忙吗?主要帮我看看从声卡采集到的数据放在那里了。如何用采集到的数据画波形图。 --------------------编程问答-------------------- !!!!真的没人有帮忙看看吗?? --------------------编程问答-------------------- DING
补充:VB ,  多媒体
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,