爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 18328|回复: 42

VB动画显示图片的实现

[复制链接]

新浪微博达人勋

发表于 2011-8-25 11:44:38 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 传说中的谁 于 2011-8-25 15:01 编辑

在气象中,我们经常要通过动画显示图片(雷达图、云图)的方式来观测天气系统的连续演变。今天给大家介绍一种用VB实现动画的方法。这个方法完全是由传说和笨笨设计并实现的,个人感觉它的优点在于可以任意选择图片来动画显示,而不是只能选择连续的几张图片。
需要用到的控件:一个PictureBox,两个listbox,一个timer控件,一个commandbutton,一个滑动条slider,一个commandialog。
commandbutton用于设置资料路径(懒得配置菜单栏了,有兴趣的可以自己弄),slider用于控制动画时间间隔。需要添加的引用:Microsoft Windows Common Contorls 6.0 (SP6). 添加部件:Microsoft  Common  Dialog Contorls 6.0 (SP6)。timer的intterval值设为500,list1的multiselect属性设为2,list2的visilbale属性设成false。
代码如下:
  1. Private Sub Command1_Click()
  2. Dim FilePath As String
  3. CommonDialog1.ShowOpen
  4. FilePath = CommonDialog1.FileName
  5. Open App.Path & "\FilePath.txt" For Output As #1
  6. Print #1, CurDir(FilePath)
  7. Close #1
  8. End Sub

  9. Private Sub Form_Load()
  10. On Error Resume Next
  11. Dim FilePath As String
  12. Dim A()
  13. Dim B()
  14. Open App.Path & "\FilePath.txt" For Input As #1
  15. Line Input #1, FilePath
  16. Close #1
  17. Form1.List1.Clear
  18. ss = Dir(FilePath & "/*.GIF")
  19. While ss <> ""
  20. i = i + 1
  21. ReDim Preserve A(i + 1)
  22. ReDim Preserve B(i + 1)
  23. A(i) = ss
  24. B(i) = DateDiff("s", FileDateTime(Path & ss), Now)
  25. ss = Dir
  26. Wend
  27. For i = 1 To UBound(B) - 1
  28. Form1.List1.AddItem A(i)
  29. Next i
  30. Form1.List1.ListIndex = Form1.List1.NewIndex
  31. Picture1.Picture = LoadPicture(List1.List(List1.ListIndex))


  32. Slider1.Min = 1
  33. Slider1.Max = 10
  34. End Sub

  35. Private Sub List1_Click()
  36. On Error Resume Next
  37. Picture1.Picture = LoadPicture(List1.List(List1.ListIndex))
  38. List2.Clear
  39. For i = 1 To List1.ListCount
  40. If List1.SelCount > 1 Then
  41. Timer1.Enabled = True
  42. If List1.Selected(i) = True Then
  43. List2.AddItem List1.List(i)
  44. End If
  45. Else: Timer1.Enabled = False
  46. End If
  47. Next i
  48. End Sub

  49. Private Sub Slider1_Click()
  50. Timer1.Interval = Slider1.Value * 100
  51. End Sub

  52. Private Sub Timer1_Timer()
  53. On Error Resume Next
  54. Static j As Integer
  55. j = j + 1
  56. If j > List2.ListCount Then
  57. j = 0
  58. End If
  59. FileName = Form1.List2.List(j)
  60. DoEvents
  61. Form1.Picture1.Picture = LoadPicture(FilePath & FileName)

  62. End Sub
复制代码
界面:

                               
登录/注册后可看大图


程序在附件里:
动画.rar (633 KB, 下载次数: 92)

评分

参与人数 3威望 +5 金钱 +45 贡献 +12 收起 理由
mofangbao + 3 + 15 + 5 来晚了...
athlon8048 + 10 + 2 支持原创发帖!赞一个!
artmunich + 2 + 20 + 5 先给分了~

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-8-25 11:54:40 | 显示全部楼层
顶啊,传说很给力,感谢分享
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-8-25 11:58:47 | 显示全部楼层
鼓励原创,传说最棒~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-8-25 12:09:24 | 显示全部楼层
太强了,支持一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-8-25 13:16:40 | 显示全部楼层
哈哈~~~传说果然厉害
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-8-25 13:20:40 | 显示全部楼层
笨笨从来很守信啊,加油啦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-8-25 13:33:53 | 显示全部楼层
@zsmnantong@尽头的尽头@mofangbao@artmunich@善人/jw感谢各位的支持!下一个计划是写combo控件与flexgrid的结合,这个在做预报制作发布的小软件的时候可以用到
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-8-25 13:35:54 | 显示全部楼层
传说中的谁 发表于 2011-8-25 13:33
@zsmnantong@尽头的尽头@mofangbao@artmunich@善人/jw感谢各位的支持!下一个计划是写combo控件与flexgrid的 ...

我来了...恩 我也整理整理我的一些东西,不过我基本都是针对特定的东西写的,通用性比较差
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-8-25 13:39:03 | 显示全部楼层
mofangbao 发表于 2011-8-25 13:35
我来了...恩 我也整理整理我的一些东西,不过我基本都是针对特定的东西写的,通用性比较差

你那些东西比较高深嘛!我的是这些年做过的一些东西,拿出来分享一下,也许有的童鞋用得到
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-8-25 13:50:46 | 显示全部楼层
我试了一下啊,是不是循环没调好啊,我在win7和xp下面都不能自动开始循环,还是...本来设计就是用上下箭头动画的?

=====================
@传说中的谁看了代码才明白(没学过只有边看边猜),原来是多个选中后才能开始循环,呵呵,这个想法不错,就是你上面说的不连续的吧
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表