利用API函數(shù)實(shí)現(xiàn)圖像淡入淡出效果
利用API函數(shù)實(shí)現(xiàn)圖像淡入淡出效果
一般傳統(tǒng)的實(shí)現(xiàn)兩個(gè)PictureBox之間圖像的淡入淡出效果都需要使用大量的API函數(shù)并進(jìn)行復(fù)雜的調(diào)色板以及繪圖設(shè)備(Device Context)的操作。但是在Win98、Win2000中,微軟提供了支持透明圖像拷貝的AlphaBlend函數(shù)。
這篇文章就介紹如何通過API函數(shù)AlphaBlend實(shí)現(xiàn)PictureBox之間圖像的淡入淡出效果。AlphaBlend函數(shù)的定義在msimg32.dll中,一般Win98、Win2000都帶了這個(gè)庫,在編程之前你可以先察看一下該文件是否存在。
打開VB建立一個(gè)新工程。選擇菜單 Project | Add Module 添加一個(gè)模塊到工程中,在其中輸入以下代碼:
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ù)的定義同普通的復(fù)制函數(shù)Bitblt很相似,只是最后的參數(shù)blendFunct定義為一個(gè)BlendProps結(jié)構(gòu)。那么為什么在函數(shù)定義中blendFunct 定義為Long類型呢?因?yàn)閞BlendProps結(jié)構(gòu)長度是4個(gè)字節(jié)。
而Long類型變量的長度也是4個(gè)字節(jié),那么我們就可以程序中通過API函數(shù)CopyMemory將一個(gè)rBlendProps結(jié)構(gòu)拷貝到blendFunct 中。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試成績查詢時(shí)間匯總
2011計(jì)算機(jī)等級(jí)考試二級(jí)VB考點(diǎn)及習(xí)題匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |