
Dim Pic_num As Long
Dim Pic_name() As String
Dim pic_star As Long
Dim p_width As Single
Dim p_height As Single
Dim bili_w As Single
Dim bili_h As Single
Dim v_mod As Long
Private Sub Form_Load()
Dim L_name As String
Pic_num = 0
ReDim Pic_name(Pic_num)
L_name = Dir(App.Path &"\pic\*.JPG")
Do While L_name <>""
ReDim Preserve Pic_name(Pic_num)
Pic_name(Pic_num) = L_name
Pic_num = Pic_num + 1
L_name = Dir
Loop
L_name = Dir(App.Path &"\pic\*.BMP")
Do While L_name <>""
ReDim Preserve Pic_name(Pic_num)
Pic_name(Pic_num) = L_name
Pic_num = Pic_num + 1
L_name = Dir
Loop
Picture1.AutoSize = True
Picture1.AutoRedraw = True
Picture1.Visible = False
Picture2.AutoSize = False
Picture2.AutoRedraw = True
Picture2.Visible = True
Timer1.Interval = 10
Timer1.Enabled = False
Timer2.Interval = 50
Timer2.Enabled = False
If Pic_num >0 Then
Picture1.Picture = LoadPicture(App.Path &"\pic\" &Pic_name(0))
Picture2.PaintPicture Picture1.Picture, 0, 0, Picture2.ScaleWidth, Picture2.ScaleHeight, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
Timer1.Enabled = True
Timer1.Interval = 2000
Else
MsgBox ("没有图片显示!")
End If
End Sub
Private Sub Form_Resize()
Picture2.Width = Me.Width
Picture2.Height = Me.Width
Picture2.Top = 0
Picture2.Left = 0
End Sub
Private Sub Timer1_Timer()
Dim L_id As Long
Randomize
L_id = Int((Pic_num + 1) * Rnd)
Picture1.Picture = LoadPicture(App.Path &"\pic\" &Pic_name(L_id))
bili_w = Picture1.ScaleWidth / Picture2.ScaleWidth
bili_h = Picture1.ScaleHeight / Picture2.ScaleHeight
p_width = Picture2.Width / 100
p_height = Picture2.Height / 100
pic_star = 0
Randomize
v_mod = Int(2 * Rnd)
Timer1.Enabled = False
Timer2.Enabled = True
End Sub
Private Sub Timer2_Timer()
If pic_star <101 Then
pic_star = pic_star + 1
Select Case v_mod
Case 0
Picture2.PaintPicture Picture1.Picture, 0, 0, 100 * p_width, pic_star * p_height, 0, 0, bili_w * pic_star * p_width, bili_h * pic_star * p_height '这是第一个效果,通过修改不同的载入方式来实现不同的效果
Case 1
Picture2.PaintPicture Picture1.Picture, 0, 0, pic_star * p_width, pic_star * p_height, 0, 0, bili_w * pic_star * p_width, bili_h * pic_star * p_height '这是第二个效果,通过修改不同的载入方式来实现不同的效果
End Select
Else
pic_star = 0
Timer1.Enabled = True
Timer2.Enabled = False
End If
End Sub
你还可以取消图片框2,让它直接画在窗体上.
鼠标移动图像功能。在vb中为了方面 *** 作,给鼠标赋予了很多的功能,而图片跟着鼠标移动变化代码就是鼠标移动图像的功能,只需要在设置中的桌面特效里将该功能关闭鼠标即可正常使用了。VisualBasic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言。这种方法需要用到TIMER控件,因为TIMER控件不会影响FROM_LOAD等其他程序的运行,也不受其他程序的影响,所以为首选。图像框(IMAGEBOX)的STRETCH属性设置为TRUE使图片大小适应控件大小,将准备好的图片依次命名为1.GIF、2.GIF、3.GIF……TIMER的INTERVAL属性设置为100(视情况而定)。在TIMER1_TIMER()中加入以下代码:PRIVATE SUB TIMER1_TIMER()DIM FILENAME AS STRINGSTATIC INT AS INTEGERINT = INT + 1FILENAME = “ C:\WINDOWS\DESKTOP\” &INT &“.GIF” ‘路径应视情况而定IMAGE1.PICTURE = LOADPICTURE(FILENAME)IF INT >= 5 THEN INT = 0 ‘条件INT到底应大于几应视情况而定END SUB第二种情况:用PICTURECLIP控件实现。PICTURECLIP控件要在“部件”中添加,并且要与PICTURE和IMAGE控件配套使用。右键单击PICTURECLIP使用属性中的”自定义”—加载图片—”通用属性”—定义”行,列”值(行,列值在此例中暂定为18)。程序代码如下:DIM A AS INTEGERPRIVATE SUB form_LOAD ()PICTURE1.PICTURE = PICTURECLIP.GRAPHICCELL(1)A = 1TIMER1.INTERVAL = 100END SUBPRIVATE SUB TIMER_TIMER ()A = A + 1 :IF A = 18 THEN A = 0PICTURE1.PICTURE = PICTURECLIP.GRAPHICCELL(A)END SUB此种方法是将一张图片分割为几行、几列然后依次将每一部分显示出来,所以准备的这一图片最好是每隔一定行距列距有一个独立的内容的图案,如果是一个连续的、整体的图案那么出来的效果就只会”动”而不成”画”了。第三种方法:现在市面上有很多制作GIF动画的软件,如有一个叫GIF CONSTRUTION SET 的 SHAREWARE (32位)可以很容易得制作出动态的GIF图形文件,我们可以用VB中的ANIGIF控件来”播放”已做好的GIF图片。其属性设置位要播放的GIF文件名,在程序运行时控件会自动播放GIF动画。当然ANIGIF控件要在”部件”里添加后才能使用。此种方法不用很多的代码而效果也不错(因为在制作GIF动画时一般都有预览功能)因此建议大家使用这种方法。以上是本人在编程中总结出的几点经验仅供大家参考,还望大家多揣磨、多实践总结出更好的方法欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)