VB如何制作多张图片的特效显示效果(就像POWERPOINT制作的特效那样),用来制作屏保程序

VB如何制作多张图片的特效显示效果(就像POWERPOINT制作的特效那样),用来制作屏保程序,第1张

'这个拿去试一试,两个时钟,两个图片框,自己设定图片框2的大小,比如让它和窗体一样大

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动画时一般都有预览功能)因此建议大家使用这种方法。以上是本人在编程中总结出的几点经验仅供大家参考,还望大家多揣磨、多实践总结出更好的方法


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8053556.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存