计算机等级考试二级VB辅导:图像的特殊技巧

来源:百度文库 编辑:神马文学网 时间:2024/04/29 23:50:17
[导读]计算机等级考试二级VB辅导:图像的特殊技巧,这里向你展示用BitBlt函数实现画面的各种足以令人兴奋的效果。
为了美化显示屏幕,增加画面的动感,常常要用到各种图像显示特技,图像的切换技术能明显美化画面。用VB编制这类程序时,由于VB自身没有这种切换功能,因此需要控件的参与或调用API函数BitBlt来实现这种功能。这里向你展示用BitBlt函数实现画面的各种足以令人兴奋的效果。
假设有5个图像文件——Picture1至Picture5,我们的目标是:让这5幅画自动地循环显示,每幅画以某种切换方式出现,当有击鼠标动作时退出程序。
创建项目文件
建立一个新工程文件Project1,加入一个新的Form名称为Form1;添加一个模块文件Modull;在Form1中加入一个图画框Picture1和一个定时器Timer1。
设置属性如下:
Form1:AutoRedraw:True
ScaleMode:3
Picture1:AutoRedraw:True
ScaleMode:3
Visible:False
编写代码
声明BitBlt函数——Modull.bas中的内容:
Public Const SRCCOPY=&HCC0020′(DWORD)dest=source
Declare Function BitBlt Lib ″gdi32″Alias ″BitBlt″(By Val hDestDC As Long ByVal x As Long ByVal y As Long ByVal nWidth As Long ByVal nHeight As Long ByVal hSrcDC As Long ByVal xSrc As Long ByVal ySrc As Long ByVal dwRop As Long ) As Long
这两句只要从Win32api.txt文件中粘贴即可(使用API查看器)。
Form1中的代码:
在Declare中定义全局变量:
Const bmpfilemax=5 ′总共5个bmp文件。
Dim bmpfile(bmpfilemax)As String ′bmp文件的文件名数组。
Dim drawbmpmode(bmpfilemax) As Integer ′各画显示时的切换方式。
Dim bmpnum,movestep,xmax,ymax As Integer
Dim kxy As Single ′x,y二个方向的比例。
程序运行时先作初始化工作:
Private Sub Form-Load ()
bmpnum=0 ′当前文件号=0,第一个文件。
bmpfile(0)=App.Path+′′\bmp1.bmp′′
bmpfile(1)=App.Path+′′\bmp2.bmp′′
bmpfile(2)=App.Path+′′\bmp3.bmp′′
bmpfile(3)=App.Path+′′\bmp4.bmp′′
bmpfile(4)=App.Path+′′\bmp5.bmp′′
drawbmpmode(0)=1 drawbmpmode(1)=5
drawbmpmode(2)=3 drawbmpmode(3)=4
drawbmpmode(4)=2 movestep=0
xmax=Form.ScaleWidth/2
ymax=Form.ScaleHeight/2
kxy =ymax/xmax
Picture1.Picture=LoadPicture(bmpfile(bmpnum))
Timer1.Interval=30 ′定时器启动。
End Sub
响应鼠标的代码:
Private Sub Form—Click ()
EndEnd Sub
切换演示工作主要在定时器中完成,代码如下:
Private Sub Timer1-Timer ()
hDestDC=Form1.HDC ′目标DC。
hSrcDC=Picture1.hDC
drawflag =drawbmpmode(bmpnum)
Select Case drawflag
Case 1 ′从中间逐步放大。
endmax=xmax′用于结束判断。
X1=xmax-movestep
w=movestep*2
Y1=Cint(ymax-movestep*kxy)
h=Cint(2*movestep*kxy)
i=BitBlt(hDestDC,X1,Y1,w,h,hSrcDC,X1,Y1,SRCCOPY)
Case 2 ′从左到右。
endmax=xmax
w=movestep*2
h=Form1.ScaleHeight
i=BitBlt(hDestDC,0,0,w,h,hSrcDC,X1,Y1,SRCCOPY)
Case 3 ′左右向中间。
endmax=xmax
w=movestep
h=Form1.ScaleHeight
i=BitBlt(hDestDC,0,0,w,h,hSrcDC,0,0,SRCCOPY)′左面部分。
X1= Form1.ScaleWidth-movestep
i=BitBlt(hDestDC,X1,0,w,h,hSrcDC,X1,0,SRCCOPY) ′左面部分。
Case 4 ′栅条状。
endmax=CInt(2*xmax/10)
tempi=CInt(2*xmax/10)
w=movestep
h=Form1.ScaleHeight
For s=0 To 9
i=BitBlt(hDestDC,tempi*s,0,w,h,hSrcDC,tempi*s,0,SRCCOPY)
Next s
Case 5 ′棱形状。
endmax=CInt(2*xmax/10)
tempi=CInt(2*xmax/10)
w=movestep
For ih=0 To w-1
For ik=0 To 9
For ij=0 To 9
l=tempi*ik+tempi/2
t=tempi*ij+tempi/2
i=BitBlt(hDestDC,1-(w-ih),t-ih,(w-ih)*2,1,hSrcDC,1-(w-ih), t-ih, SRCCOPY)
i=BitBlt(hDestDC,1-(w-ih),t+ih,(w-ih)*2,1,hSrcDC,1-(w-ih), t+ih, SRCCOPY)
Next ij
Next ik
Next ih
End Select
Form1.Refresh
movestep=movestep+2 ′步进增加。
If movestep>endmax Then
bmpnum=bmpnum+1 ′进到下一张画。
If bmpnum>=bmpfilemax Then
bmpnum=0
End If
movestep=0
Picture1.Picture=LoadPicture(bmpfile(bmpnum))
End If End Sub
计算机等级考试二级VB辅导:图像的特殊技巧 全国计算机等级考试二级VB考试大纲 全国计算机等级考试——二级公共基础知识辅导讲义 全国计算机等级考试二级教程目录 在excel中计算日期差工龄生日等-计算机等级考试辅导-计算机一级考试,二级考试,三级考试... 图像二值化的VB代码1 特殊辅导 API在VB中应用之技巧集锦-计算机等级考试-考试吧 计算机等级考试:二级VFP机试汇总 湖南省计算机等级考试(二级)选择题1 全国计算机等级考试二级公共基础知识复习资料 2009年全国计算机等级考试二级VFP大纲 湖南省计算机等级考试(二级)选择题12 计算机等级考试:二级VFP机试汇总-计算机二级考试- 江西vb二级测试大纲 江西vb二级考试大纲 【计算机等级考试大全!!!】~~~~~教你如何过计算机等级考试!!!~~~~~国家一级、二级、三级、四级!!~~~~~(一至四级比较全,现在用不着以后会用到的)!~~~~~ 【计算机等级考试大全!!!】~~~~~教你如何过计算机等级考试!!!~~~~~国家一级、二级、三级、四级!!~~~~~(一至四级比较全,现在用不着以后会用到的 【计算机等级考试大全!!!】~~~~~教你如何过计算机等级考试!!!~~~~~国家一级、二级、三级、四级!!~~~~~(一至四级比较全,现在用不着以后会用到的)!~~~~~ 【计算机等级考试各等级大全!!!】~~~~~教你如何过计算机等级考试!!!~~~~~国家一级、二级、三级、四级!!~~~~~(一至四级比较全,现在用不着以后会用到的)!~~~~~ VB编程的必备技巧 提高鸡产蛋量的特殊方法_快速赚钱vb 计算机等级考试二级C++考点分析之类和对象 全国计算机等级考试二级C语言模拟试题1 - Qzone日志