用VB編程實(shí)現(xiàn)圖像的熠熠生輝效果

字號(hào):

一道炫目的閃光在圖像上從左至右徐徐掠過(guò),相信如果把這樣的特效應(yīng)用到程序的界面上一定能為你的程序增色不少。這樣的特效到底是怎樣實(shí)現(xiàn)的呢?讓我們一起來(lái)分析一下,這是本特效在某一瞬間的截圖,可以看出沿著一條傾斜的掃描線,它周?chē)南笏囟及凑战鼜?qiáng)遠(yuǎn)弱(距掃描線)的規(guī)律增強(qiáng)亮度(當(dāng)然,掃描線并不顯示出來(lái),它只是一個(gè)抽象的概念,以方便我們的編程工作)。當(dāng)掃描線從圖像最左端平滑地移動(dòng)到圖像最右端的時(shí)候,由于視覺(jué)暫留作用,看起來(lái)就會(huì)有熠熠生輝的效果。那么怎樣加強(qiáng)像素的亮度呢?可不能直接增大像素的顏色值,因?yàn)橄袼氐念伾凳且粋€(gè)長(zhǎng)整形數(shù)值,使用4個(gè)字節(jié)表示,位的字節(jié)的值為0,其它3個(gè)字節(jié)依次是B、G、R值,所以要加強(qiáng)像素的亮度,就要分別增加B、G、R值的大小。由于這是個(gè)動(dòng)態(tài)特效,靜態(tài)圖片很難表達(dá)清楚,讀者可先運(yùn)行一下代碼以幫助理解。
    ASPectratio="t">
    為了使本特效更靈活、更實(shí)用,筆者定義了幾個(gè)參數(shù),可以通過(guò)參數(shù)對(duì)特效做調(diào)整以達(dá)到滿(mǎn)意的效果。
    參數(shù)表-----------------------------------------------------
    Angle 光照傾角,取值0到90之間,以角度為單位
    WidthOfArea 光照區(qū)寬度,取值大于1的整數(shù),以像素為單位
    Speed 光照區(qū)運(yùn)動(dòng)速度,取值大于1的整數(shù)
    EnhanceRatio 光照強(qiáng)度參數(shù),取值大于1的整數(shù)
    -----------------------------------------------------
    好,原理就這么多,現(xiàn)在我們開(kāi)始動(dòng)手實(shí)現(xiàn)吧!打開(kāi)VB6.0,選擇新建標(biāo)準(zhǔn)EXE工程,在主窗口form1中繪制下表中所列控件并設(shè)置窗體和各控件的屬性。
    控件
     屬性
     設(shè)置
    Form1
     Name
     Form1
    ScaleMode
     3-pixel
    PictureBox
     Name
     PicDest
    ScaleMode
     3-pixel
    Picture
     背景圖
    PictureBox
     Name
     PicSource
    ScaleMode
     3-pixel
    Picture
     主體圖
    Label
     Name
     LblA
    Caption
     角度
    Textbox
     Name
     TxtA
    Text
     30
    Label
     Name
     LblW
    Caption
     寬度
    Textbox
     Name
     TxtW
    Text
     15
    Label
     Name
     LblE
    Caption
     強(qiáng)度
    Textbox
     Name
     TxtE
    Text
     15
    Label
     Name
     LblS
    Caption
     速度
    Textbox
     Name
     TxtS
    Text
     1
    CommandButton
     Name
     Cmd1
    Caption
     開(kāi)始特效
       生成最后的窗體。