C++中BitBlt的使用方法詳解
BitBlt
該函數(shù)對指定的源設(shè)備環(huán)境區(qū)域中的像素進(jìn)行位塊(bit_block)轉(zhuǎn)換,以傳送到目標(biāo)設(shè)備環(huán)境。
原型:
BOOL BitBlt( HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop);
參數(shù):
hdcDest:指向目標(biāo)設(shè)備環(huán)境的句柄。
nXDest、nYDest:指定目標(biāo)矩形區(qū)域左上角的X軸和Y軸邏輯坐標(biāo)
nWidth、nHeight:指定源和目標(biāo)矩形區(qū)域的邏輯寬度和邏輯高度。
hdcSrc:指向源設(shè)備環(huán)境的句柄。
nXSrc、nYSrc:指定源矩形區(qū)域左上角的X軸和Y軸邏輯坐標(biāo)。
dwRop:指定光柵操作代碼。這些代碼將定義源矩形區(qū)域的顏色數(shù)據(jù),如何與目標(biāo)矩形區(qū)域的顏色數(shù)據(jù)組合以完成最后的顏色。下面列出了一些常見的光柵操作代碼:
值 |
描述 |
BLACKNESS |
表示使用與物理調(diào)色板的索引0相關(guān)的色彩來填充目標(biāo)矩形區(qū)域,(對缺省的物理調(diào)色板而言,該顏色為黑色)。 |
DSTINVERT |
表示使目標(biāo)矩形區(qū)域顏色取反。 |
MERGECOPY |
表示使用布爾型AND(與)操作符將源矩形區(qū)域的顏色與特定模式組合一起。 |
MERGEPAINT |
通過使用布爾型OR(或)操作符將源矩形區(qū)域的顏色取反后與目標(biāo)矩形區(qū)域的顏色合并。 |
NOTSRCCOPY |
將源矩形區(qū)域顏色取反,拷貝到目標(biāo)矩形區(qū)域。 |
NOTSRCERASE |
使用布爾類型的OR(或)操作符組合源和目標(biāo)矩形區(qū)域的顏色值,然后將合成的顏色取反。 |
PATCOPY |
將特定的模式拷貝到目標(biāo)位圖上。 |
PATINVERT |
通過使用布爾型XOR(異或)操作符將源和目標(biāo)矩形區(qū)域內(nèi)的顏色合并。 |
PATPAINT |
通過使用布爾型OR(或)操作符將源矩形區(qū)域取反后的顏色值與特定模式的顏色合并。然后使用OR(或)操作符將該操作的結(jié)果與目標(biāo)矩形區(qū)域內(nèi)的顏色合并。 |
SRCAND |
通過使用布爾型AND(與)操作符來將源和目標(biāo)矩形區(qū)域內(nèi)的顏色合并。 |
SRCCOPY |
將源矩形區(qū)域直接拷貝到目標(biāo)矩形區(qū)域。 |
SRCERASE |
通過使用布爾型AND(與)操作符將目標(biāo)矩形區(qū)域顏色取反后與源矩形區(qū)域的顏色值合并。 |
SRCINVERT |
通過使用布爾型XOR(異或)操作符將源和目標(biāo)矩形區(qū)域的顏色合并。 |
SRCPAINT |
通過使用布爾型OR(或)操作符將源和目標(biāo)矩形區(qū)域的顏色合并。 |
WHITENESS |
使用與物理調(diào)色板中索引1有關(guān)的顏色填充目標(biāo)矩形區(qū)域。(對于缺省物理調(diào)色板來說,這個顏色就是白色)。 |
完整的光柵操作(ROP)碼,參見 Ternary Raster Operations.
返回值:
如果函數(shù)成功,那么返回值非零;如果函數(shù)失敗,則返回值為零。調(diào)用GetLastError函數(shù)獲取擴(kuò)展錯誤信息。
說明:
如果在源設(shè)備環(huán)境中可以實行旋轉(zhuǎn)或剪切變換,那么函數(shù)BitBlt返回一個錯誤。
如果存在其他變換(并且目標(biāo)設(shè)備環(huán)境中匹配變換無效),那么目標(biāo)設(shè)備環(huán)境中的矩形區(qū)域?qū)⒃谛枰獣r進(jìn)行拉伸、壓縮或旋轉(zhuǎn)。
如果源和目標(biāo)設(shè)備環(huán)境的顏色格式不匹配,那么BitBlt函數(shù)將源場景的顏色格式轉(zhuǎn)換成能與目標(biāo)格式匹配的格式。
當(dāng)正在記錄一個增強型圖元文件時,如果源設(shè)備環(huán)境標(biāo)識為一個增強型圖元文件設(shè)備環(huán)境,那么會出現(xiàn)錯誤。
并不是所有的設(shè)備都支持BitBlt函數(shù)。更多信息,調(diào)用GetDeviceCaps 函數(shù),將第二個參數(shù)賦值為RC_BITBLT來查看設(shè)備是否支持。(For more information, see the RC_BITBLT raster capability entry in the GetDeviceCaps function, as well as the MaskBlt and StretchBlt functions. )
如果源和目標(biāo)設(shè)備環(huán)境代表不同的設(shè)備,那么BitBlt函數(shù)返回錯誤。
更多關(guān)于從右到左向位塊傳輸顯示信息(For information about blitting to displays with right-to-left orientations),參見 Creating Bitmaps。
在Windows CE 1.0和1.01版中,參數(shù)dwRop只可以指定為下列值:SRCCOPY、SRCAND、SRCPAINT、SRCINVERT。在Windows CE 2.0及以后版中,參數(shù)dwRop可以是任何ROP3代碼值。
下面是MSDN上的例子:
HBITMAP CopyBitmap( HBITMAP hbm) { HDC hdcSrc = CreateCompatibleDC(NULL); HDC hdcDst = CreateCompatibleDC(NULL); HBITMAP hbmOld, hbmOld2, hbmNew; BITMAP bm; GetObject(hbm, sizeof(bm), &bm); hbmOld = SelectObject(hdcSrc, hbm); hbmNew = CreateBitmap( bm.bmWidth, bm.bmHeight, bm.bmPlanes, bm.bmBitsPixel, NULL); hbmOld2 = SelectObject(hdcDst, hbmNew); BitBlt(hdcDst, 0, 0, bm.bmWidth, bm.bmHeight, hdcSrc, 0, 0, SRCCOPY); SelectObject(hdcSrc, hbmOld); SelectObject(hdcDst, hbmOld2); DeleteDC(hdcSrc); DeleteDC(hdcDst); return hbmNew; }
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
上一篇:C語言排序算法之冒泡排序?qū)崿F(xiàn)方法【改進(jìn)版】
欄 目:C語言
下一篇:淺析c語言中的內(nèi)存
本文標(biāo)題:C++中BitBlt的使用方法詳解
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1161.html
您可能感興趣的文章
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對數(shù)怎么表達(dá)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10使用C++實現(xiàn)全排列算法的方法詳解
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解
- 01-10APUE筆記之:進(jìn)程環(huán)境詳解
- 01-10c++中inline的用法分析
- 01-10如何尋找數(shù)組中的第二大數(shù)


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10delphi制作wav文件的方法
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實例總結(jié)
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置