利用API函數(shù)實現(xiàn)圖像淡入淡出效果
利用API函數(shù)實現(xiàn)圖像淡入淡出效果
一般傳統(tǒng)的實現(xiàn)兩個PictureBox之間圖像的淡入淡出效果都需要使用大量的API函數(shù)并進行復雜的調(diào)色板以及繪圖設備(Device Context)的操作。但是在Win98、Win2000中,微軟提供了支持透明圖像拷貝的AlphaBlend函數(shù)。
這篇文章就介紹如何通過API函數(shù)AlphaBlend實現(xiàn)PictureBox之間圖像的淡入淡出效果。AlphaBlend函數(shù)的定義在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函數(shù)的定義同普通的復制函數(shù)Bitblt很相似,只是最后的參數(shù)blendFunct定義為一個BlendProps結(jié)構(gòu)。那么為什么在函數(shù)定義中blendFunct 定義為Long類型呢?因為rBlendProps結(jié)構(gòu)長度是4個字節(jié)。
而Long類型變量的長度也是4個字節(jié),那么我們就可以程序中通過API函數(shù)CopyMemory將一個rBlendProps結(jié)構(gòu)拷貝到blendFunct 中。
相關推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |