国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++中BitBlt的使用方法詳解

2020-05-23 13:40:08
字體:
來源:轉載
供稿:網友

BitBlt

該函數對指定的源設備環境區域中的像素進行位塊(bit_block)轉換,以傳送到目標設備環境。

原型:  

BOOL BitBlt(  HDC hdcDest,  int nXDest, int nYDest, int nWidth, int nHeight,  HDC hdcSrc,  int nXSrc, int nYSrc,  DWORD dwRop);

參數:   

hdcDest:指向目標設備環境的句柄。

nXDest、nYDest:指定目標矩形區域左上角的X軸和Y軸邏輯坐標

nWidth、nHeight:指定源和目標矩形區域的邏輯寬度和邏輯高度。

hdcSrc:指向源設備環境的句柄。

nXSrc、nYSrc:指定源矩形區域左上角的X軸和Y軸邏輯坐標。

dwRop:指定光柵操作代碼。這些代碼將定義源矩形區域的顏色數據,如何與目標矩形區域的顏色數據組合以完成最后的顏色。下面列出了一些常見的光柵操作代碼:

 

描述

BLACKNESS

表示使用與物理調色板的索引0相關的色彩來填充目標矩形區域,(對缺省的物理調色板而言,該顏色為黑色)。

DSTINVERT

表示使目標矩形區域顏色取反。

MERGECOPY 

表示使用布爾型AND(與)操作符將源矩形區域的顏色與特定模式組合一起。

MERGEPAINT

通過使用布爾型OR(或)操作符將源矩形區域的顏色取反后與目標矩形區域的顏色合并。

NOTSRCCOPY

將源矩形區域顏色取反,拷貝到目標矩形區域。

NOTSRCERASE

使用布爾類型的OR(或)操作符組合源和目標矩形區域的顏色值,然后將合成的顏色取反。

PATCOPY

將特定的模式拷貝到目標位圖上。

PATINVERT

通過使用布爾型XOR(異或)操作符將源和目標矩形區域內的顏色合并。

PATPAINT

通過使用布爾型OR(或)操作符將源矩形區域取反后的顏色值與特定模式的顏色合并。然后使用OR(或)操作符將該操作的結果與目標矩形區域內的顏色合并。

SRCAND

通過使用布爾型AND(與)操作符來將源和目標矩形區域內的顏色合并。

SRCCOPY

將源矩形區域直接拷貝到目標矩形區域。

SRCERASE

通過使用布爾型AND(與)操作符將目標矩形區域顏色取反后與源矩形區域的顏色值合并。

SRCINVERT

通過使用布爾型XOR(異或)操作符將源和目標矩形區域的顏色合并。

SRCPAINT

通過使用布爾型OR(或)操作符將源和目標矩形區域的顏色合并。

WHITENESS

使用與物理調色板中索引1有關的顏色填充目標矩形區域。(對于缺省物理調色板來說,這個顏色就是白色)。

 

  完整的光柵操作(ROP)碼,參見 Ternary Raster Operations.

返回值:

   如果函數成功,那么返回值非零;如果函數失敗,則返回值為零。調用GetLastError函數獲取擴展錯誤信息。

說明:

   如果在源設備環境中可以實行旋轉或剪切變換,那么函數BitBlt返回一個錯誤。

   如果存在其他變換(并且目標設備環境中匹配變換無效),那么目標設備環境中的矩形區域將在需要時進行拉伸、壓縮或旋轉。

   如果源和目標設備環境的顏色格式不匹配,那么BitBlt函數將源場景的顏色格式轉換成能與目標格式匹配的格式。

   當正在記錄一個增強型圖元文件時,如果源設備環境標識為一個增強型圖元文件設備環境,那么會出現錯誤。

   并不是所有的設備都支持BitBlt函數。更多信息,調用GetDeviceCaps 函數,將第二個參數賦值為RC_BITBLT來查看設備是否支持。(For more information, see the RC_BITBLT raster capability entry in the GetDeviceCaps function, as well as the MaskBlt and StretchBlt functions. )

   如果源和目標設備環境代表不同的設備,那么BitBlt函數返回錯誤。

   更多關于從右到左向位塊傳輸顯示信息(For information about blitting to displays with right-to-left orientations),參見 Creating Bitmaps。

   在Windows CE 1.0和1.01版中,參數dwRop只可以指定為下列值:SRCCOPY、SRCAND、SRCPAINT、SRCINVERT。在Windows CE 2.0及以后版中,參數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;} 

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安阳市| 星子县| 镇坪县| 广昌县| 沾益县| 精河县| 龙泉市| 东明县| 琼中| 成安县| 襄樊市| 休宁县| 朝阳县| 定兴县| 承德县| 鹤山市| 宜黄县| 翼城县| 康马县| 鄂伦春自治旗| 阜南县| 隆德县| 内江市| 水富县| 安国市| 高清| 大埔区| 饶阳县| 镇宁| 武鸣县| 疏附县| 安国市| 昂仁县| 临泉县| 德江县| 鹤岗市| 桦甸市| 长治市| 志丹县| 福鼎市| 郑州市|