blt功能 C 中BitBlt的使用方法詳解

2021-10-18 05:17:40 字數 2938 閱讀 2337

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;

C 中BitBlt的使用方法詳解

bitblt 該函式對指定的源裝置環境區域中的畫素進行位塊 bit block 轉換,以傳送到目標裝置環境。原型 bool bitblt hdc hdcdest,int nxdest,int nydest,int nwidth,int nheight,hdc hdcsrc,int nxsrc,int...

VSCode的Remote SSH功能的使用

許多商用的應用都是在linux環境上執行,如何方便的修改linux上的檔案就是乙個比較麻煩的事情,針對這個問題,vscode新加入了乙個remote ssh的外掛程式非常簡單的解決了這個問題,host localhost hostname 127.0.0.1 user root port 22 fo...

c 中Split函式的使方法

split函式 描述 返回乙個下標從零開始的一維陣列,它包含指定數目的子字串。語法 split expression delimiter count compare split函式語法有如下幾部分 部分描述 expression 必需的。包含子字串和分隔符的字串表示式 如果expression是乙個...