• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            luqingfei@C++

            為中華之崛起而崛起!
            兼聽則明,偏聽則暗。

            Win32匯編--使用資源--位圖

             

            使用資源位圖

             

            位圖(Bitmap)是Windows操作系統存儲圖像的方式,圖像中的每個像素對應存儲器中的一個或多個數據位,如單色位圖每個像素對應1位,16色位圖每個像素對應4位,256色為8位,全彩色為24位等,所有的像素數據按照一行行的順序排列在存儲器中,每個像素對應的位數稱為顏色深度

             

            位圖的優越之處是操作的速度很快,計算機的屏幕顯示是由硬件從視頻緩沖區中的數據映射的,向視頻緩沖區中拷貝數據就可以直接將圖像顯示在屏幕上,所以以位圖的方式存儲像素,顯示圖形的時間幾乎就是向視頻緩沖區拷貝數據的時間。

             

            位圖的不便之處一是尺寸問題:由于位圖是不壓縮的,它占用的空間很大,一個1024x768像素24位色的圖像的大小為1024x768x3字節,達2.3MB;二是位圖的縮放問題,讀者都知道矢量和位圖之間的關系,矢量圖形(現在網上最流行的Flash就是矢量格式的)可以無限制縮放而不變形,因為它是根據矢量實時計算出像素數據的,而位圖縮放后要對原來的像素數據進行插值計算,不可避免地會有失真。

             

            在使用Windows的位圖之前,必須搞清楚幾個概念:位圖、設備無關位圖和位圖文件

             

            單純意義上的“位圖”指的就是存放在內存中、可以馬上使用的位圖,它的顏色深度總是對應當前設備(如屏幕或打印機等)的顏色深度,不和具體的設備對應,位圖數據是沒有意義的,因為無法知道要把數據中的多少位解釋成一個像素

             

            對于存放在磁盤上或別的地方的位圖數據來說,它的顏色深度有可能和屏幕顏色深度不同,為了準確描述它的顏色信息,必須有像素數據的屬性說明以及色彩表,在使用這個位圖的時候,可以根據這些信息將像素數據轉換到需要的顏色深度。色彩表和位圖數據合在一起就叫做設備無關位圖(DIB),因為它轉換后可以用在不同顏色深度的設備上。Windows有函數專門用來處理DIB。使用DIB唯一的問題是當將高顏色數的DIB轉換到低顏色數的設備上時,由于色彩只能被轉換成設備所能表示的最相近的顏色,所以可能會有很大的顏色失真。

             

            DIB可以存放在磁盤上的位圖文件中,位圖文件一般以bmp為擴展名,它的內容包括一個bitmap文件頭和DIB數據,bitmap文件頭可以用來驗證整個文件的有效性。所以簡單地講,DIB是位圖數據的超集,位圖文件又是DIB的超集。

             

            Windows支持的圖形文件格式只有bmpicocur等幾種,可以廣泛用在GDI操作中的只有bmp文件,其他格式文件如jpgtif等都是不能直接應用的,要使用這些文件,必須在代碼中將它們轉換到位圖格式以后才行,所以要編寫一個僅支持bmp的圖片瀏覽器是很簡單的,而要支持其他格式麻煩就大了,僅jpg格式的解碼就是個很復雜的問題!

             

             

            在資源中定義位圖

            Windowsbmp文件的支持有兩種方法,一種是打開bmp文件讀入DIB部分的數據,然后用函數將DIB數據轉換到位圖數據;另一種方法就是在資源文件中用和icocur文件類似的方法定義位圖資源,然后在程序中裝入后使用。

             

            在資源腳本文件中定義位圖資源的語法是:

                   位圖ID          BITMAP        [DISCARDABLE]         位圖文件名

             

            在程序中可以用LoadBitmap函數裝入位圖資源:

                   invoke     LoadBitmap, hInstance, lpBitmapName

                   .if           eax

                                 mov        hBitmap, eax

                   .endif

            LoadBitmap函數返回一個位圖句柄,在程序退出的時候,位圖句柄必須用DeleteObject函數釋放。對位圖資源的大部分操作涉及GDI的內容,以后再詳細學習。

             

            posted on 2010-08-31 15:19 luqingfei 閱讀(1453) 評論(0)  編輯 收藏 引用 所屬分類: Win32匯編程語言序設計

            導航

            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            統計

            留言簿(6)

            隨筆分類(109)

            隨筆檔案(105)

            Blogers

            Game

            Life

            NodeJs

            Python

            Useful Webs

            大牛

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            婷婷五月深深久久精品| 久久久久夜夜夜精品国产| 亚洲精品乱码久久久久久| 天堂久久天堂AV色综合| 国产成人久久精品麻豆一区| 青草影院天堂男人久久| 久久91精品国产91| 99久久精品九九亚洲精品| 麻豆久久久9性大片| 久久99精品国产99久久6男男| 久久久青草青青国产亚洲免观| 精品久久亚洲中文无码| www亚洲欲色成人久久精品| 久久国产高潮流白浆免费观看| 欧美日韩精品久久久久| 日韩欧美亚洲综合久久影院d3| 成人久久免费网站| 亚洲AV伊人久久青青草原| 国产999精品久久久久久| 72种姿势欧美久久久久大黄蕉| 久久无码人妻精品一区二区三区| 国内精品九九久久久精品| 久久精品国产亚洲av麻豆图片| 亚洲精品久久久www| 欧美一级久久久久久久大| 久久e热在这里只有国产中文精品99| 久久精品国产亚洲一区二区| 久久国产精品无码一区二区三区| 精品国产乱码久久久久久人妻| 亚洲成av人片不卡无码久久| 精品国产乱码久久久久久浪潮 | 九九久久自然熟的香蕉图片| 欧美黑人激情性久久| 久久综合给合综合久久| 久久精品一区二区三区中文字幕| 久久九色综合九色99伊人| 久久久久久久久久久免费精品| 久久久久久亚洲精品无码| 亚洲婷婷国产精品电影人久久| 日本加勒比久久精品| 伊人久久大香线蕉av不卡|