首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Visual Basic > VB中实现图像特技(1)
【标  题】:VB中实现图像特技(1)
【关键字】:VB,图像,VB
【来  源】:网络

VB中实现图像特技(1)

在多媒体程序设计中,为了美化显示屏幕,增加画面的动感,常常要用天各种图像显示特技。图像的切换技术能明显美化画面。用Visual Basic编制这类程序时,由于VB自身没有这种切换功能,因此需要利用第三方控件或调用WindowsAPI函数BitBlt来实现这种功能。本文介绍用BitBlt函数实现画面的各种切换方法,供大家参考。
假设有5个图像文件(Picture1-Picture5),我们的目标是让这5幅画自动地循环显示,每幅画以某种切换方式出现,当有击鼠标动作时退出程序。
1 创建项目文件:
运行VB,建立一个新工程文件Project1,加入一个新的Form名称为Form1,和一个模块文件Modull,在Form1中加入一个图画框Picture1和一个定时器Timer1。
设置各控件的属性如下:
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
50, 0)
   Picture1.Cls
   Do
   m = Rnd * Picture1.ScaleWidth
   n = Rnd * Picture1.ScaleHeight - 500
   For i = 0 To Rnd * 800
   Picture1.Line (m, n + 2.5 * i)-(m + i / 2, n + 2 * i), RGB(180, 180, 180)
   Picture1.Line (m, n + 2.5 * i)-(m - i / 2, n + 2 * i), RGB(80, 80, 80)
   Next i
   DoEvents
   Loop
   End Sub
   ′结束程序
   Private Sub Command3-Click()
   End
   End Sub
快捷键 -- 找寻 Function/Subroutine:【上一篇】
VB中不规则图形热点的实现:【下一篇】
【相关文章】
  • VB中实现图像特技(2)
  • VB中随机图像的魅力
  • VB中位图旋转的实现
  • 用VB捕捉屏幕图象
  • 分割图像的方法
  • 用VB获取桌面图象
  • VB5.0调用Office97技巧
  • 怎样在VB中控制Word
  • 使用VB实现Excel自动获取外部数据
  • 巧用VBA自动处理Word表格
  • 【随机文章】
  • 数据库驱动程序测试的建议
  • Lotus Domino/Notes 中的安全技术
  • 常用的各种排序算法的JAVA实现。
  • Maya 4.0 动画的基础知识-编辑关键帧(2)
  • Oracle Client技術學習文檔
  • 35岁之前成功的12条法则
  • 一个延时自动关闭计算机的脚本!
  • 1Z031第七章维护redo log 文件
  • IBM P系列巡检内容及操作指导
  • 汇编语言-读书写笔记-王爽
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.