收藏 分享(赏)

VB利用API函数实现图像淡入淡出.doc

上传人:hwpkd79526 文档编号:8275143 上传时间:2019-06-17 格式:DOC 页数:2 大小:29KB
下载 相关 举报
VB利用API函数实现图像淡入淡出.doc_第1页
第1页 / 共2页
VB利用API函数实现图像淡入淡出.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

1、VB 利用 API 函数实现图像淡入淡出(2008-11-07 23:18:40)标签:vb api 图像淡入淡出 it 分类:VB一般传统的实现两个 PictureBox 之间图像的淡入淡出效果都需要使用大量的 API 函数并进行复杂的调色板以及绘图设备(Device Context)的操作。但是在 Win98、Win2000 中,微软提供了支持透明图像拷贝的 AlphaBlend 函数。这篇文章就介绍如何通过 API 函数 AlphaBlend 实现 PictureBox 之间图像的淡入淡出效果。AlphaBlend 函数的定义在 msimg32.dll 中,一般 Win98、Win200

2、0 都带了这个库,在编程之前你可以先察看一下该文件是否存在。打开 VB 建立一个新工程。选择菜单 Project | Add Module 添加一个模块到工程中,在其中输入以下代码:Public Type rBlendPropstBlendOp As BytetBlendOptions As BytetBlendAmount As BytetAlphaType As ByteEnd TypePublic Declare Function AlphaBlend Lib “msimg32“ (ByVal hDestDC As Long, _ByVal x As Long, ByVal y As L

3、ong, 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 BooleanPublic Declare Sub CopyMemory Lib “kernel32“ Alias “RtlMoveMemory“ _(Destination As Any, Source As A

4、ny, ByVal Length As Long)大家可以看到,AlphaBlend 函数的定义同普通的复制函数 Bitblt 很相似,只是最后的参数 blendFunct 定义为一个 rBlendProps 结构。那么为什么在函数定义中 blendFunct 定义为 Long 类型呢?因为 rBlendProps 结构长度是 4 个字节。而 Long 类型变量的长度也是 4 个字节,那么我们就可以程序中通过 API 函数 CopyMemory 将一个 rBlendProps 结构拷贝到 blendFunct 中。在 Form1 中添加两个 PictureBox 控件,其中 Picture2

5、为源,Picture1 为拷贝目标,将两者的 ScaleMode 都设置为 3-Pixel 将两者的 AutoRedraw 属性都设置为 True,然后分别添加图像。在加入一个 Timer控件以及一个 CommandButton 控件,然后在 Form1 的代码窗口中添加如下代码:Dim lTime As ByteSub ShowTransparency(cSrc As PictureBox, cDest As PictureBox, _ByVal nLevel As Byte)Dim LrProps As rBlendPropsDim LnBlendPtr As LongcDest.ClsL

6、rProps.tBlendAmount = nLevelCopyMemory LnBlendPtr, LrProps, 4With cSrcAlphaBlend cDest.hDC, 0, 0, .ScaleWidth, .ScaleHeight, _.hDC, 0, 0, .ScaleWidth, .ScaleHeight, LnBlendPtrEnd WithcDest.RefreshEnd SubPrivate Sub Command1_Click()lTime = 0Timer1.Interval = 100Timer1.Enabled = TrueEnd SubPrivate Sub

7、 Timer1_Timer()lTime = lTime + 1ShowTransparency Picture2, Picture1, lTimeIf lTime = 255 ThenTimer1.Enabled = FalseEnd IfMe.Caption = Str(Int(lTime / 2.55) + “%“End Sub运行程序,点击 Command1,就可以看到 Picture2 图像拷贝到 Picture1 上的淡入淡出效果了。在结构 rBlendProps 中,最重要的参数就是 tBlendAmount,该值决定了源与目标之间的透明程序。如果为 0 的话,源完全透明,如果为 255 的话,源完全覆盖目标。另外 AlphaBlend 函数不只用于两个 PictureBox 之间的拷贝,而且可以在两个 Device Context 之间的透明拷贝,也就是说,象窗口等控件之间也可以实现透明效果。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报