利用API函数实现图像淡入淡出效果

文章作者 100test 发表时间 2011:03:18 20:37:04
来源 100Test.Com百考试题网


  利用API函数实现图像淡入淡出效果
  一般传统的实现两个PictureBox之间图像的淡入淡出效果都需要使用大量的API函数并进行复杂的调色板以及绘图设备(Device Context)的操作。但是在Win98、Win2000中,微软提供了支持透明图像拷贝的AlphaBlend函数。
  这篇文章就介绍如何通过API函数AlphaBlend实现PictureBox之间图像的淡入淡出效果。AlphaBlend函数的定义在msimg32.dll中,一般Win98、Win2000都带了这个库,在编程之前你可以先察看一下该文件是否存在。
  打开VB建立一个新工程。选择菜单 Project | Add Module 添加一个模块到工程中,在其中输入以下代码:
  Public Type rBlendProps
  tBlendOp As Byte
  tBlendOptions As Byte
  tBlendAmount As Byte
  tAlphaType As Byte
  End Type
  Public Declare Function AlphaBlend Lib "msimg32" (ByVal 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 widthSrc As Long,ByVal heightSrc As Long, ByVal blendFunct As Long) As Boolean
  Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
  (Destination As Any, Source As Any, ByVal Length As Long)
  大家可以看到,AlphaBlend函数的定义同普通的复制函数Bitblt很相似,只是最后的参数blendFunct定义为一个BlendProps结构。那么为什么在函数定义中blendFunct 定义为Long类型呢?因为rBlendProps结构长度是4个字节。
  而Long类型变量的长度也是4个字节,那么我们就可以程序中通过API函数CopyMemory将一个rBlendProps结构拷贝到blendFunct 中。
  在Form1中添加两个PictureBox控件,其中Picture2为源,Picture1为拷贝目标,将两者的ScaleMode都设置为3-Pixel将两者的AutoRedraw属性都设置为True,然后分别添加图像。在加入一个Timer控件以及一个CommandButton控件,然后在Form1的代码窗口中添加如下代码:
  Dim lTime As Byte
  Sub ShowTransparency(cSrc As PictureBox, cDest As PictureBox, _
  ByVal nLevel As Byte)
  Dim LrProps As rBlendProps
  Dim LnBlendPtr As Long
  cDest.Cls
  LrProps.tBlendAmount = nLevel
  CopyMemory LnBlendPtr, LrProps, 4
  With cSrc
  AlphaBlend cDest.hDC, 0, 0, .ScaleWidth, .ScaleHeight, _
  .hDC, 0, 0, .ScaleWidth, .ScaleHeight, LnBlendPtr
  End With
  cDest.Refresh
  End Sub
  Private Sub Command1_Click()
  lTime = 0
  Timer1.Interval = 100
  Timer1.Enabled = True
  End Sub
  Private Sub Timer1_Timer()
  lTime = lTime 1
  ShowTransparency Picture2, Picture1, lTime
  If lTime

相关文章


2010年计算机等级考试二级VB上机试题及答案解析(12)
两步就可以掌握VB使用ArrayList类
上网遭到探测用VB编写入侵监听程序
计算机二级VB辅导:用VB实现屏幕阴暗操作
利用API函数实现图像淡入淡出效果
五彩缤纷的清屏效果
用VB实现“百叶窗”的图形特效
计算机二级辅导:用VB编写抽奖程序
常见问题:文本框控件的消息及应用
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛