请教大神:
1.将一个PictureBox做成帧动画(用timeGetTime来延迟LoadPicture从而逐帧实现)
2.将这个PictureBox进行持续位移(用timeGetTime来延迟持续改变其Left值)
那么问题来了:
位移时,原本进行的帧动画会暂停.
或者帧动画时,原来进行的位移会暂停
各自都使用了DoEvent也没用
请问有解决方案吗?
不能贴附件
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Sub Img1_LoadPic()
Dim Cycle As Integer
Dim PicNum As Integer
Dim Savetime As Double
For Cycle = 1 To 10
For PicNum = 1 To 3
Image1.Picture = LoadPicture(ThisWorkbook.Path & "\IMG\" & PicNum & ".gif")
DoEvents
Savetime = timeGetTime
While timeGetTime < Savetime + 500
DoEvents
Wend
Next
Next
End Sub
这是我先实现的帧动画
Sub Img1_Mov()
Dim Savetime As Double
Dim NowMovNum As Integer
Dim AddMovNum As Integer
Dim AddValue As Integer
For AddValue = 1 To 5
NowMovNum = Image1.Left
AddMovNum = NowMovNum + AddValue
Image1.Left = AddMovNum
DoEvents
Savetime = timeGetTime
While timeGetTime < Savetime + 500
DoEvents
Wend
Next
End Sub
这是我实现的picturebox持续位移
两个同时运行时会中断另一个
请问有解决方案可以两个sub同时产生效果么?
大神教我怎么改~~~
问题的关键是移动PictureBox造成了gif的重绘,打乱了它的播放,必须放弃使用PictureBox移动这个方法,改为直接连续绘制/擦除gif在窗口中,你需要首先分解gif的帧,然后绘制。
在vba里模拟动画播放多费劲啊,你直接上个webbrowser多省事啊。