• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

        容易介紹透明位圖的完成辦法

        容易介紹透明位圖的完成辦法

        更新時(shí)間:2022-05-14 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        作者:吳斌

          在VB中顯示位圖,通常都是通過各種控件實(shí)現(xiàn)的。通過控件顯示的位圖,或全部或局部,始終是以一個(gè)規(guī)則的矩形圖像出現(xiàn)在屏幕上,無法做到只顯示位圖中某個(gè)不規(guī)則的局部圖像,而使位圖的其它部分具有透明性以露出其下原有的屏幕顯示,即所謂“透明位圖”,因此透明位圖的實(shí)現(xiàn)只能另辟蹊徑。下面,筆者將向大家介紹一種方法。

          原理

          其實(shí),Windows中隨處可見的圖標(biāo)就是一個(gè)透明位圖的典型實(shí)例。
          圖標(biāo)是由兩個(gè)單獨(dú)的位圖組成的。第一個(gè)位圖是由黑色(顏色位全為0)背景與彩色圖標(biāo)圖案組成的,該位圖將與當(dāng)前屏幕顯示通過異或(XOR)操作結(jié)合起來,故稱其為XOR位圖。第二個(gè)位圖是由白色(顏色位全為1)背景與黑色(顏色位全為0)圖標(biāo)圖案組成的,該位圖將與當(dāng)前屏幕顯示通過與(AND)操作結(jié)合起來,故稱其為AND位圖。圖標(biāo)的顯示是通過兩個(gè)步驟完成的:

          當(dāng)前屏幕顯示與AND位圖通過AND操作結(jié)合起來;
          當(dāng)前屏幕顯示與XOR位圖通過XOR操作結(jié)合起來。

          大家知道,1與任何數(shù)值A(chǔ)ND操作的結(jié)果將維持原數(shù)值,而0與任何數(shù)值A(chǔ)ND操作的結(jié)果則是0,因此在步驟1中,AND位圖中白色(1)與屏幕顯示經(jīng)過AND操作后被原色彩屏蔽,而黑色(0)則將原色彩屏蔽。步驟1結(jié)束后,屏幕上將留下一個(gè)黑色的圖標(biāo)圖案。在隨后的步驟2中,由于0與任何數(shù)值異或的結(jié)果都將是原數(shù)值,因此,XOR位圖與屏幕顯示經(jīng)過異或操作后,位圖和屏幕中的黑色部分都將被各自對應(yīng)的彩色部分屏蔽。步驟2結(jié)束后,一個(gè)形狀不規(guī)則的圖標(biāo)圖案就出現(xiàn)在屏幕上了。這就是圖標(biāo)顯示的原理。

          方法

          首先,根據(jù)源位圖和應(yīng)用需求,制作出AND位圖和XOR位圖,然后,按照上述步驟,依次將AND位圖和XOR位圖與屏幕顯示結(jié)合起來,便可實(shí)現(xiàn)透明位圖了。
          AND位圖和XOR位圖的制作,在許多圖像處理軟件中都可以輕而易舉地完成,筆者不再詳細(xì)描述。AND位圖和XOR位圖與屏幕顯示的結(jié)合,可以通過像素迭加時(shí)的光柵操作完成,具體實(shí)現(xiàn)可以使用VB4中為Form和PictureBox新增的方法PaintPicture。該方法的功能是將一個(gè)圖像文件的內(nèi)容傳送到Form或PictureBox的顯示屏幕上,也就是將源圖像中的像素與當(dāng)前顯示屏幕上對應(yīng)的像素疊加在一起。PaintPicture的語法為:object.PaintPicturepicture,x1,y1,width1,height1,x2,y2,width2,height2,opcode。其中,object是調(diào)用方法的Form或PictureBox對象實(shí)例;picture指定源圖像,該參數(shù)必須是Form或PictureBox控件的Picture屬性;x1,y1指定目標(biāo)對象中用于擺放被傳送圖像的矩形區(qū)域左上角的邏輯坐標(biāo)點(diǎn);width1,height1指定目標(biāo)對象中用于擺放被傳送圖像的矩形區(qū)域的寬度和高度;x2,y2指定源圖像中被傳送的矩形區(qū)域左上角的邏輯坐標(biāo)點(diǎn);width2,height2指定源圖像中被傳送部分的寬度和高度;opcode指定傳送過程中使用的光柵操作代碼值,AND操作代碼值為H8800C6,XOR操作代碼值為H660046。

          實(shí)例

          下面,本文介紹一個(gè)透明位圖的應(yīng)用實(shí)例,實(shí)例演示一個(gè)卡通人物在窗口頂部循環(huán)地從左到右穿越窗口的動畫。動畫的播放采用PictureClip控件和Timer控件來實(shí)現(xiàn),動畫畫面的顯示則使用本文的透明位圖技術(shù)。
          新建一個(gè)VB項(xiàng)目,在Form1中加入一個(gè)Timer控件Timer1,兩個(gè)PictureClip控件bmpXOR和bmpAND,將它們的Picture屬性分別設(shè)置為XOR.BMP和AND.BMP,這兩個(gè)位圖就是透明位圖所使用的XOR位圖和AND位圖,如右所示。
          在Form的Generaldeclaration部分加入下列常量聲明:

          Const SRCAND As Long=&H8800C6
          Const SRCINVERT AsLong=&H660046
          Const StepLength = 10
          Const AnimateSpeed = 100

          項(xiàng)目代碼如下:
          Private Sub Form_Load()
           Me.ScaleMode=3
           With bmpAND
            .Cols=4
            .Rows=2
           End With
           With bmpXOR
            .Cols=4
            .Rows=2
            End With
           Timer1.Interval=AnimateSpeed
          EndSub

          Private Sub Timer1_Timer()
           Static CurPic As Integer
           Static CurX As Single
           Me.Refresh
           If CurPic > bmpAND.Cols*bmpAND.Rows-1 Then CurPic=0
           If CurX > Me.ScaleWidth Then CurX=0
           Me.PaintPicture bmpAND.GraphicCell(CurPic),CurX,0,,,,,,,SRCAND
           Me.PaintPicture bmpXOR.GraphicCell(CurPic),CurX,0,,,,,,,SRCINVERT
           CurPic=CurPic+1
           CurX=CurX+StepLength
          End Sub

          按F5運(yùn)行,Form1中就會出現(xiàn)一個(gè)在窗口頂部從左到右循環(huán)地行走的卡通人物。人物行走的速度和步長可以通過常量AnimateSpeed和StepLength控制。為了檢驗(yàn)透明位圖的效果,可以為Form1設(shè)置各種背景。您會看到,使用透明位圖技術(shù)顯示的動畫與各種背景都能自然地融合在一起,如同事先渲染生成的動畫影片一樣。這就是透明位圖技術(shù)希望達(dá)到的目的。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 女人18毛片免费观看| 一级毛片在线播放免费| 亚洲中文字幕一二三四区苍井空| 一级黄色片免费观看| 亚洲国产精品尤物yw在线| 色九月亚洲综合网| 免费一级毛片在线观看| 亚洲国产婷婷香蕉久久久久久| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 久久精品国产亚洲一区二区| 二区久久国产乱子伦免费精品 | 日韩免费三级电影| 黄色免费网址在线观看| 亚洲伊人久久综合中文成人网| av午夜福利一片免费看久久| 亚洲精品白浆高清久久久久久| 华人在线精品免费观看| 四虎成人免费网站在线| 国产精品亚洲色图| 国内精品99亚洲免费高清| 国产人成亚洲第一网站在线播放| 成人A级毛片免费观看AV网站| 亚洲国产av玩弄放荡人妇| 亚洲成aⅴ人片久青草影院| 国产精品无码永久免费888| 亚洲VA中文字幕不卡无码| 在线观看H网址免费入口| 亚洲av中文无码乱人伦在线观看| 亚洲精品无码av天堂| 精品四虎免费观看国产高清午夜| 亚洲在成人网在线看| 免费观看四虎精品国产永久| a毛片成人免费全部播放| 18亚洲男同志videos网站| 卡一卡二卡三在线入口免费| 一级一级毛片免费播放| 亚洲日本在线免费观看| 全部免费a级毛片| 狼群影院在线观看免费观看直播| 日韩国产欧美亚洲v片| 亚洲色图在线观看|