比如说小鸟在空中飞翔,多帧位移可以实现。但同时如何用缩放实现小鸟飞远飞近?
解决方案 »
- vs2005(vb语言)链接服务器数据库
- 奇怪的现象,ToolTipText显示不出来,怎么解决?
- 如何在打印窗体时,设置打印起始位置和打印范围?
- 为什么这段程序逐语句运行时可以得到正常运行结果,直接运行就得不到运行的要求
- Public 和 Global 声明变量的区别
- 导出CSV时,+号如何解决,用文本打开正常,用Excel打开出问题。。。在线等待!
- 问题不难,为增加人气,进来就有分,散分!
- 怎样实现一个编辑电影文件的控件,有哪个API支持吗
- 请求帮助
- 斑竹,crystalreport控件怎么添加到程序里。vb本身有么?告诉俺马上给分。
- 实时错误13,类型不匹配!
- VB如何用WinIO打字?
刚学vb不久很多问题都不懂!
代码:'“动画_透明处理”的窗体模块
Option Explicit
'变量必须先定义,才能使用
Dim ImageNo As Integer '当前的位图编号
Dim IsPlaying As Boolean '动画是否启动
Dim lngP As Long
Dim lngR As LongPrivate Sub Form_Load()
ImageNo = 1 '动画从book1.bmp开始
IsPlaying = False '开始时,动画未启动
'鼠标移到书上时,将出现“开始”提示
Timer1.Interval = 200
picback.ScaleMode = 3 '象素
picback.Picture = LoadPicture(App.Path & "\p\原野.BMP")
Picture1.AutoRedraw = True
Picture2.AutoRedraw = True
Picture11.AutoRedraw = True
Picture22.AutoRedraw = True
Picture3.AutoRedraw = True
Picture33.AutoRedraw = True
Picture4.AutoRedraw = True
Picture44.AutoRedraw = True
Picture5.AutoRedraw = True
Picture55.AutoRedraw = True
Picture6.AutoRedraw = True
Picture66.AutoRedraw = True
Picture1.Picture = LoadPicture(App.Path & "\p\1.bmp")
Picture11.Picture = LoadPicture(App.Path & "\p\1-.bmp")
Picture2.Picture = LoadPicture(App.Path & "\p\2.bmp")
Picture22.Picture = LoadPicture(App.Path & "\p\2-.bmp")
Picture3.Picture = LoadPicture(App.Path & "\p\3.bmp")
Picture33.Picture = LoadPicture(App.Path & "\p\3-.bmp")
Picture4.Picture = LoadPicture(App.Path & "\p\4.bmp")
Picture44.Picture = LoadPicture(App.Path & "\p\4-.bmp")
Picture5.Picture = LoadPicture(App.Path & "\p\5.bmp")
Picture55.Picture = LoadPicture(App.Path & "\p\5-.bmp")
Picture6.Picture = LoadPicture(App.Path & "\p\6.bmp")
Picture66.Picture = LoadPicture(App.Path & "\p\6-.bmp")
Picture1.Visible = False
Picture11.Visible = False
Picture2.Visible = False
Picture22.Visible = False
Picture3.Visible = False
Picture33.Visible = False
Picture4.Visible = False
Picture44.Visible = False
Picture5.Visible = False
Picture55.Visible = False
Picture6.Visible = False
Picture66.Visible = False
'播放声音
'SND_ASYNC:异步演播,在播放声音时可以作其他的事
'SND_LOOP:循环演播,播完后再重播。需与SND_ASYNC组合使用
sndPlaySound App.Path & "\故乡的原风景 轻音乐.wav", SND_ASYNC Or SND_LOOP
End Sub'半秒钟系统自动引发Timer事件
Private Sub Timer1_Timer()
'声明计数器intC为整型的静态变量
Static intC As Integer
'lngX和lngY表示在原野上飞舞的蝴蝶的位置
Static lngX As Long
Static lngY As Long
'intC的初值为0
intC = intC + 1
'intC有6种取值
If intC = 7 Then intC = 1
'intC=1显示1的蝴蝶
'intC=2显示11的蝴蝶
'intC=3显示2的蝴蝶
'intC=4显示22的蝴蝶
lngX = lngX - 8 '-8是X方向的增量,以象素为单位
lngY = lngY - 6 '-6是Y方向的增量,以象素为单位
If (lngY < -80) Or (lngX < -80) Then
lngX = picback.Width
lngY = picback.Height
End If
If intC = 1 Then
picback.Cls '清除蝴蝶飞舞所在的图片框
'对张开蝴蝶的透明处理
lngP = BitBlt(picback.hDC, lngX, lngY, _
Picture11.Width, Picture11.Height, Picture11.hDC, 0, 0, SRCAND)
lngP = BitBlt(picback.hDC, lngX, lngY, _
Picture1.Width, Picture1.Height, Picture1.hDC, 0, 0, SRCINVERT)
Else
If intC = 2 Then
picback.Cls '清除蝴蝶飞舞所在的图片框
'对闭合蝴蝶的透明处理
lngP = BitBlt(picback.hDC, lngX, lngY, _
Picture22.Width, Picture22.Height, Picture22.hDC, 0, 0, SRCAND)
lngP = BitBlt(picback.hDC, lngX, lngY, _
Picture2.Width, Picture2.Height, Picture2.hDC, 0, 0, SRCINVERT)
Else
If intC = 3 Then
picback.Cls
lngP = BitBlt(picback.hDC, lngX, lngY, _
Picture33.Width, Picture33.Height, Picture33.hDC, 0, 0, SRCAND)
lngP = BitBlt(picback.hDC, lngX, lngY, _
Picture3.Width, Picture3.Height, Picture3.hDC, 0, 0, SRCINVERT)
Else
If intC = 4 Then
picback.Cls
lngP = BitBlt(picback.hDC, lngX, lngY, _
Picture44.Width, Picture44.Height, Picture44.hDC, 0, 0, SRCAND)
lngP = BitBlt(picback.hDC, lngX, lngY, _
Picture4.Width, Picture4.Height, Picture4.hDC, 0, 0, SRCINVERT)
Else
If intC = 5 Then
picback.Cls
lngP = BitBlt(picback.hDC, lngX, lngY, _
Picture55.Width, Picture55.Height, Picture55.hDC, 0, 0, SRCAND)
lngP = BitBlt(picback.hDC, lngX, lngY, _
Picture5.Width, Picture5.Height, Picture5.hDC, 0, 0, SRCINVERT)
Else
If intC = 6 Then
picback.Cls
lngP = BitBlt(picback.hDC, lngX, lngY, _
Picture66.Width, Picture66.Height, Picture66.hDC, 0, 0, SRCAND)
lngP = BitBlt(picback.hDC, lngX, lngY, _
Picture6.Width, Picture6.Height, Picture6.hDC, 0, 0, SRCINVERT)
End If
End If
End If
End If
End If
End If
End Sub
Private Sub Timer2_Timer()
ImageNo = ImageNo + 1 '动画下一帧
If ImageNo > 11 Then '如果动画已到最后一帧,则
ImageNo = 1 '再从第一帧开始
End If
'在Image对象中显示动画的当前帧
picback.Picture = LoadPicture(App.Path & "\head\head" & ImageNo & ".bmp")
End Sub
最好能通过键盘上下键控制!