www.6042.com
关爱女性,关爱健康
www.6042.com
首页 | 护肤 | 香水 | 美体 | 彩妆 | 精油 | 美发 | 女装 | 婚纱 | 健康 | 家居 | 爱情 | 食品 | SPA | 性欲 | 女性
当前位置:首页 > 女性生活/性感女人 > 正文
VB图像特殊技巧
文章来源: 文章作者: 发布时间:2006-06-20 字体: [ ]

     为了美化显示屏幕,增加画面的动感,常常要用到各种图像显示特技,图像的切换技术能明显美化画面。用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 ()
  
     End  End 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
  
  

↑返回顶部 打印本页 关闭窗口↓
用户名: 新注册) 密码: 匿名评论 [所有评论]
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
§最新评论:
推荐女性文章
热点女性文章
·温泉沐浴小常识
·风雨沧桑话按摩
·生命的节日
·女子保养按摩手法
·日常化妆美丽秘籍
·持久无瑕的超级美妆(图)
·单眼皮美女秦海璐的美丽经
·水分+营养 金南珠美颜秘法
最新女性文章
·情人节开派对自爆假鼻 萧
·阿娇游街遭到女粉丝轻薄
·麦当娜获奖不感谢里奇 老
·含情脉脉游北京 张静初周
·新书爆自闭 章子怡怨“成
·张国立邓婕公司被告欠费
·伊莎贝拉柏林首映 老婆老
·丁香味仍在飘散 唐磊又悄
Power by www.6042.com 女性健康网