📄 wave.frm
字号:
VERSION 5.00
Object = "{75D4F4A8-8785-11D3-93AD-0000832EF44D}#2.0#0"; "FAST2007.ocx"
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "Comdlg32.ocx"
Begin VB.Form frmWave
BorderStyle = 3 'Fixed Dialog
Caption = "Wave Information"
ClientHeight = 5445
ClientLeft = 45
ClientTop = 330
ClientWidth = 6465
Icon = "Wave.frx":0000
LinkTopic = "Form1"
LockControls = -1 'True
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 5445
ScaleWidth = 6465
ShowInTaskbar = 0 'False
StartUpPosition = 2 'CenterScreen
Begin VB.PictureBox picWave
Height = 3285
Left = 90
ScaleHeight = 3225
ScaleWidth = 6225
TabIndex = 2
Top = 2070
Width = 6285
End
Begin VB.CommandButton cmdSelect
Caption = "Select Wave.."
Height = 420
Left = 4800
TabIndex = 0
Top = 180
Width = 1545
End
Begin MSComDlg.CommonDialog dlgOpen
Left = 5970
Top = 720
_ExtentX = 847
_ExtentY = 847
_Version = 393216
DialogTitle = "Select a bitmap"
Filter = "Wave files|*.wav|All files|*.*"
End
Begin FLWMMedia.FWWave objWave
Left = 5940
Top = 1380
_ExtentX = 820
_ExtentY = 820
End
Begin VB.Label lblInfo
Height = 1935
Left = 90
TabIndex = 1
Top = 90
Width = 4350
WordWrap = -1 'True
End
End
Attribute VB_Name = "frmWave"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Sub cmdSelect_Click()
dlgOpen.CancelError = False
dlgOpen.ShowOpen
Call picWave.Cls
If objWave.Create(dlgOpen.FileName) Then
With objWave
lblInfo = dlgOpen.FileName & vbCrLf & _
IIf(.Stereo, "Stereo", "Mono") & vbCrLf & _
.Channels & " channels" & vbCrLf & _
"Block align " & .BlockAlign & vbCrLf & _
.AverageBytesPerSecond & " bytes per second" & vbCrLf & _
.SamplesPerSecond & " samples per second"
.samples.CurrentSample = 0
Call DrawWaves
End With
Else
lblInfo = "Select a wave file"
End If
End Sub
Public Sub DrawWaves()
Dim lngInd As Long
Dim dblLeftY As Long
Dim dblRightY As Long
Dim dblLastX As Long
Dim dblLastLeftY As Long
Dim dblLastRightY As Long
Dim lngAmplitude As Long
Dim dblLeft As Double
Dim dblRight As Double
Dim dblFactor As Double
Dim dblStep As Double
dblFactor = (objWave.samples.NumSamples - objWave.samples.CurrentSample) / picWave.Width
dblStep = IIf(dblFactor < 1, 1 / dblFactor, 1)
If objWave.samples.Stereo Then
lngAmplitude = picWave.Height * 0.25
For lngInd = 0 To picWave.Width Step dblStep
objWave.samples.CurrentSample = dblFactor * lngInd
Call objWave.samples.GetSample(dblLeft, dblRight)
dblRightY = CLng(dblRight * lngAmplitude)
dblLeftY = CLng(dblLeft * lngAmplitude)
picWave.Line (dblLastX, lngAmplitude + dblLastLeftY)-(lngInd, dblLeftY + lngAmplitude)
picWave.Line (dblLastX, lngAmplitude * 3 + dblLastRightY)-(lngInd, dblRightY + lngAmplitude * 3)
dblLastLeftY = dblLeftY
dblLastRightY = dblRightY
dblLastX = lngInd
Next
Else
lngAmplitude = picWave.Height * 0.5
For lngInd = 0 To picWave.Width Step dblStep
objWave.samples.CurrentSample = dblFactor * lngInd
Call objWave.samples.GetSample(dblLeft, dblRight)
dblLeftY = CLng(dblLeft * lngAmplitude)
picWave.Line (dblLastX, lngAmplitude + dblLastLeftY)-(lngInd, dblLeftY + lngAmplitude)
dblLastLeftY = dblLeftY
dblLastX = lngInd
Next
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -