VBA中pictureBox在持续位移时,保持帧动画(延迟LoadPicture)?

灭我豚拳 2014-11-18 10:52:55
请教大神:
1.将一个PictureBox做成帧动画(用timeGetTime来延迟LoadPicture从而逐帧实现)
2.将这个PictureBox进行持续位移(用timeGetTime来延迟持续改变其Left值)

那么问题来了:
位移时,原本进行的帧动画会暂停.
或者帧动画时,原来进行的位移会暂停
各自都使用了DoEvent也没用
请问有解决方案吗?


不能贴附件,只能贴个范例的代码:
1.这是我picturebox实现的帧动画(IMG文件夹内的1.gif 2.gif 3.gif是我设置3张静态gif图片)

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

2.这是我实现的picturebox持续位移

两个同时运行时会中断另一个
请问有解决方案可以两个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

...全文
405 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2014-11-19
  • 打赏
  • 举报
回复
用任务队列:
1)先定义一个任务接口
'ITask
Option Explicit

'任务是否运行中'
Public Property Get Enabled() As Boolean
End Property

'下个触发时点'
Public Property Get NextTime() As Long
End Property

'达到触发时点时被调用。'
'显示下一帧动画或下一步移动。'
'同时需要增加NextTime的值,如果动画/移动结束则设Enabled为False'
Public Sub OnTimer()
End Sub

2)动画/移动分别做成实现ITask接口的Class
3)调用的方式如下
Private Sub RunTasks()
Dim colTasks As Collection
Dim cTask As ITask
Dim lTime As Long
Dim bOnTimer As Boolean
Dim lEnabledCount As Long

Set colTasks = New Collection
'初始化动画/移动的任务实例,加入colTasks集合'

Do
lTime = timeGetTime()
lEnabledCount = 0
bOnTimer = False

For Each cTask In colTasks
If cTask.Enabled Then

If lTime >= cTask.NextTime Then
cTask.OnTimer
bOnTimer = True

If cTask.Enabled Then
lEnabledCount = lEnabledCount + 1
End If
Else
lEnabledCount = lEnabledCount + 1
End If

End If
Next

If bOnTimer Then
DoEvents
End If
Loop While lEnabledCount > 0

End Sub
一如既往哈 2014-11-19
  • 打赏
  • 举报
回复
在vba里模拟显示动画,多费劲啊。直接上个webbrowser控件不好吗?
内容概要:本文详细介绍了Anaconda的下载、安装与配置方法(2025最新版)。Anaconda是一个开源的Python/R数据科学集成开发平台,预装了1500多个科学计算库,并提供conda包管理和环境管理功能。文章首先列出了系统要求,接着分别讲述了适用于不同操作系统的下载方式,包括官方下载和国内镜像下载。然后,具体讲解了Windows、macOS和Linux三种操作系统的安装步骤,以及环境变量的手动配置方法。此外,还提供了验证安装是否成功的命令和配置国内镜像源的方法,以提高下载速度。最后,列出了一些常用conda命令和常见问题的解决方案。 适合人群:从事数据科学、机器学习领域的研究人员和开发者,特别是需要频繁使用Python科学计算库的用户。 使用场景及目标:①帮助用户快速搭建Python开发环境,尤其是需要多个Python版本共存或隔离环境的情况下;②解决因网络原因导致的下载速度慢的问题;③提供详细的安装指南,确保安装过程顺利进行;④指导用户正确配置环境变量,避免常见的安装后无法使用的错误。 阅读建议:由于Anaconda涉及多平台安装和配置,建议读者根据自己的操作系统选择相应的章节重点阅读,并严格按照步骤操作。对于初次使用者,建议先从简单的安装入手,再逐步学习环境管理和包管理的相关命令。

2,503

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧