PictureBox控件作播放时间进度条演示,不会闪烁,并且和Slider控件同步
2007-12-24 14:39
260 查看
转载请注明出处。VB演示源码下载地址:http://download.csdn.net/source/315615
'PictureBox控件作播放时间进度条演示,不会闪烁,并且和Slider控件同步。
'在窗体Form1中放2个命令按钮Command1、Command2,1个滑杆控件Slider1,1个图片框控件Picture1,Picture1和Slider1的宽度可以不一样,1个定时器控件Timer1
Option Explicit
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Sub Command1_Click()
Dim S As String, fName As String, sName As String
On Error Resume Next
fName = "E:/下载歌曲/你最近还好吗_she.wma"
S = String(LenB(fName), Chr(0))
GetShortPathName fName, S, Len(S)
sName = Left(S, InStr(S, Chr(0)) - 1)
mciSendString "stop MEDIA", vbNullString, 0, 0
mciSendString "close MEDIA", vbNullString, 0, 0
Call mciSendString("open " & Trim(sName) & " alias MEDIA", vbNullString, 256, 0)
S = String(256, Chr(0))
mciSendString "status MEDIA length", S, Len(S), 0
Slider1.Max = Val(S)
Slider1.Min = 0
Slider1.TickFrequency = Int(Val(S) / 3)
Timer1.Enabled = True
Picture1.BackColor = RGB(74, 74, 82)
mciSendString "play MEDIA", vbNullString, 0, 0
End Sub
Private Sub Command2_Click()
On Error Resume Next
Timer1.Enabled = False
mciSendString "pause MEDIA", vbNullString, 0, 0
mciSendString "stop MEDIA", vbNullString, 0, 0
mciSendString "close MEDIA", vbNullString, 0, 0
End Sub
Private Sub Form_Load()
Form1.BackColor = &H0&
Command1.Caption = "播放音乐"
Command2.Caption = "停止播放"
Picture1.BackColor = &HC0C000
Picture1.FillColor = &H0&
Picture1.ForeColor = &H80000008
Picture1.Height = 65 '图片框的高度
Timer1.Interval = 100
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Dim S As String '记录当前时间
Dim cjlS1 As Long, cjlS2 As Long
Dim cjlDB As Double
On Error Resume Next
S = String(256, Chr(0))
mciSendString "status MEDIA position", S, Len(S), 0
Slider1.Value = Val(S) '当前播放时间进度,单位是毫秒
Debug.Print " Slider1.Value=" & Slider1.Value
'除以1000全都化成秒
cjlS1 = (Slider1.Value / 1000) * Int(Picture1.Width / (Slider1.Max / 1000)) '基本值
cjlDB = (Picture1.Width / (Slider1.Max / 1000)) - Int(Picture1.Width / (Slider1.Max / 1000))
cjlS2 = Int((Slider1.Value / 1000) * (cjlDB)) '误差
Picture1.Line (0, 0)-(cjlS1 + cjlS2, Picture1.Height), RGB(157, 217, 253), BF '播放时间进度显示器
End Sub
'PictureBox控件作播放时间进度条演示,不会闪烁,并且和Slider控件同步。
'在窗体Form1中放2个命令按钮Command1、Command2,1个滑杆控件Slider1,1个图片框控件Picture1,Picture1和Slider1的宽度可以不一样,1个定时器控件Timer1
Option Explicit
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Sub Command1_Click()
Dim S As String, fName As String, sName As String
On Error Resume Next
fName = "E:/下载歌曲/你最近还好吗_she.wma"
S = String(LenB(fName), Chr(0))
GetShortPathName fName, S, Len(S)
sName = Left(S, InStr(S, Chr(0)) - 1)
mciSendString "stop MEDIA", vbNullString, 0, 0
mciSendString "close MEDIA", vbNullString, 0, 0
Call mciSendString("open " & Trim(sName) & " alias MEDIA", vbNullString, 256, 0)
S = String(256, Chr(0))
mciSendString "status MEDIA length", S, Len(S), 0
Slider1.Max = Val(S)
Slider1.Min = 0
Slider1.TickFrequency = Int(Val(S) / 3)
Timer1.Enabled = True
Picture1.BackColor = RGB(74, 74, 82)
mciSendString "play MEDIA", vbNullString, 0, 0
End Sub
Private Sub Command2_Click()
On Error Resume Next
Timer1.Enabled = False
mciSendString "pause MEDIA", vbNullString, 0, 0
mciSendString "stop MEDIA", vbNullString, 0, 0
mciSendString "close MEDIA", vbNullString, 0, 0
End Sub
Private Sub Form_Load()
Form1.BackColor = &H0&
Command1.Caption = "播放音乐"
Command2.Caption = "停止播放"
Picture1.BackColor = &HC0C000
Picture1.FillColor = &H0&
Picture1.ForeColor = &H80000008
Picture1.Height = 65 '图片框的高度
Timer1.Interval = 100
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Dim S As String '记录当前时间
Dim cjlS1 As Long, cjlS2 As Long
Dim cjlDB As Double
On Error Resume Next
S = String(256, Chr(0))
mciSendString "status MEDIA position", S, Len(S), 0
Slider1.Value = Val(S) '当前播放时间进度,单位是毫秒
Debug.Print " Slider1.Value=" & Slider1.Value
'除以1000全都化成秒
cjlS1 = (Slider1.Value / 1000) * Int(Picture1.Width / (Slider1.Max / 1000)) '基本值
cjlDB = (Picture1.Width / (Slider1.Max / 1000)) - Int(Picture1.Width / (Slider1.Max / 1000))
cjlS2 = Int((Slider1.Value / 1000) * (cjlDB)) '误差
Picture1.Line (0, 0)-(cjlS1 + cjlS2, Picture1.Height), RGB(157, 217, 253), BF '播放时间进度显示器
End Sub
相关文章推荐
- TTrackBar对TShockwareFlash播放控件与进度同步(Delphi)
- C#窗体加载和控件加载不同步导致控件闪烁
- Android多媒体开发 音乐播放(加带进度条、时间显示)以及使用SoundPool播放音效
- uwp开发:Slider控件和MediaElement绑定,实现拖动播放。
- wdatepicker 日历控件,起始日期和结束日期 ,相差60天,并且在当时时间之前
- 页面上现有ProgressBar控件progressBar,请用书写线程以10秒的的时间完成其进度显示工作
- 多线程下载网络歌曲&播放歌曲&并用seekbar调节进度&显示歌曲两边的时间
- Swift - 使用AVPlayer制作一个音乐播放器1(带播放时间和播放进度)
- 初级音乐播放器——播放存储卡上的一首音乐,能够显示歌曲名和播放进度,并且能够播放和暂停(没有SD卡会报错)
- (Jquery功能篇) Jquery UI 相关组件(手风琴、tab分页、进度条、 滚动条、 时间控件)
- Cocos2d-x控件使用CCControlSlider<代码演示>
- android ffmpeg+opensl 音频解码播放、暂停、进度seek、时间、上/下一首
- FFMPEG 播放时间计算 AVRational 音视频同步问题分析
- 视频、音频打时间戳的方法及其音视频同步(播放)原理
- 使用时间控件,并且比较时间大小,和时间类型之间的转换
- 视频、音频打时间戳的方法及其音视频同步(播放)原理
- Android视频音乐播放SeekBar和播放时间同步
- AJAX控件之Slider(进度条效果)
- 【JavaScript】一个同步于本地时间的动态时钟并且自定义时间格式
- 多线程下载网络歌曲&播放歌曲&并用seekbar调节进度&显示歌曲两边的时间