庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>程序设计>VB专区>编程技巧>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

VB中实现图像特技(2)

 作者:本站收集   日期:2005-8-4 11:33:27
字号选择〖 〗/ 双击滚屏 单击停止   
设置各控件的属性如下:
Form1:AutoRedraw:True
ScaleMode:3
Picture1:AutoRedraw:True
ScaleMode:3
Visible:False
2 代码编写
Modull.bas中的内容(声明BitBlt函数):
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文件中粘贴即可。
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 ()
End &当有击鼠标动作时程序结束
End Sub

切换演示工作主要在定时器中完成:
Private Sub Timer1-Timer ()
hDestDC=Form1.HDC&目标DC
hSrcDC=Picture1.hDC&源DC,画是从不可见的Picture1中拷贝到窗体
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) &共分阶10条
tempi=CInt(2*xmax/10)
w=movestep
h=Form1.ScaleHeight
For ij=0 To 9
i=BitBlt(hDestDC,tempi*ij,0,w,h,hSrcDC,tempi*ij,0,SRCCOPY)
Next ij
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&若5张画已显示完则再从第一张开始
bmpnum=0
End If
movestep=0
Picture1.Picture=LoadPicture(bmpfile(bmpnum))
End If
End Sub
上一篇:VB中随机图像的魅力    下一篇:VB中实现图像特技(1)  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-8-4 11:33:27
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿