本文主要介绍了c中BitBlt用法详解的相关信息,希望这篇文章可以帮助到大家,有需要的朋友可以参考一下。
BitBlt
该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。
原型:
布尔位Blt(
HDC hdcDest,
int nXDest,int nYDest,int nWidth,int nHeight,
HDC hdcSrc,
int nXSrc,int nYSrc,
DWORD dwRop);
参数:
HdcDest:目标设备环境的句柄。
NXDest,nYDest:指定目标矩形区域左上角的X轴和Y轴的逻辑坐标。
NWTH,nHeight:指定源矩形区域和目标矩形区域的逻辑宽度和高度。
HdcSrc:源设备环境的句柄。
NX,nXSrc:指定源矩形区域左上角的X轴和Y轴的逻辑坐标。
指定光栅操作代码。这些代码将定义如何将源矩形区域的颜色数据与目标矩形区域的颜色数据相结合,以完成最终的颜色。下面列出了一些常见的光栅操作代码:
价值
形容
黑色
表示目标矩形区域填充有与物理调色板的索引0相关的颜色(对于默认物理调色板,此颜色为黑色)。
dst反转
指示目标矩形区域的颜色被反转。
合并副本
指示布尔AND运算符用于将源矩形区域的颜色与特定图案相结合。
合并画图
使用布尔或(或)运算符反转源矩形区域的颜色,并将其与目标矩形区域的颜色合并。
NOTSRCCOPY
反转源矩形区域的颜色,并将其复制到目标矩形区域。
NOTSRCERASE
使用布尔OR (or)运算符组合源矩形区域和目标矩形区域的颜色值,然后反转合成的颜色。
副本
将特定图案复制到目标位图。
帕廷韦特
使用布尔XOR运算符组合源和目标矩形区域中的颜色。
PATPAINT
使用布尔或(或)运算符将源矩形区域的反转颜色值与特定图案的颜色合并。然后使用OR(或)运算符将此操作的结果与目标矩形区域中的颜色合并。
SRCAND
使用布尔AND运算符合并源和目标矩形区域中的颜色。
SRCCOPY
将源矩形区域直接复制到目标矩形区域。
蔗糖酶
使用布尔AND运算符反转目标矩形区域的颜色,并将其与源矩形区域的颜色值合并。
SRCINVERT
使用布尔XOR运算符组合源矩形区域和目标矩形区域的颜色。
src油漆
使用布尔OR(或)运算符组合源矩形区域和目标矩形区域的颜色。
白
用物理调色板中与索引1相关的颜色填充目标矩形区域。(对于默认的物理调色板,该颜色是白色)。
完整的光栅操作(ROP)代码,参见终端光栅操作。
返回值:
如果函数成功,返回值非零;如果函数失败,返回值为零。调用GetLastError函数获取扩展的错误信息。
说明:
如果旋转或剪切转换可以在源设备环境中执行,BitBlt函数将返回一个错误。
如果存在其他转换(并且目标设备环境中的匹配转换无效),则目标设备环境中的矩形区域将在必要时被拉伸、压缩或旋转。
如果源和目标设备环境的颜色格式不匹配,BitBlt函数会将源场景的颜色格式转换为与目标格式匹配的格式。
当记录增强元文件时,如果源设备环境被识别为增强元文件设备环境,将会出现错误。
并非所有设备都支持BitBlt功能。有关更多信息,请调用GetDeviceCaps函数并分配第二个参数RC_BITBLT,以查看设备是否支持它。(有关详细信息,请参阅GetDeviceCaps函数中的RC_BITBLT栅格功能条目,以及MaskBlt和StretchBlt函数。)
如果源和目标设备环境代表不同的设备,那么BitBlt函数将返回一个错误。
请参阅创建位图,了解有关从右向左显示消隐的更多信息。
在windows ce和1.01版中,参数dwRop只能指定为以下值:SRCCOPY、SRCAND、SRCPAINT、SRCINVERT。在Windows CE 2.0和更高版本中,参数dwRop可以是任何ROP3代码值。
以下是MSDN的一个例子:
HBITMAP复制位图(HBITMAP hbm) {
HDC hdcSrc=CreateCompatibleDC(NULL);
HDC HDC dst=CreateCompatibleDC(NULL);
HBITMAP hbmOld,hbmOld2,hbmNew
位图BM;
GetObject(hbm,sizeof(bm),BM);
hbmOld=SelectObject(hdcSrc,hbm);
hbmNew=CreateBitmap( bm.bmWidth,bm.bmHeight,bm.bmPlanes,
bm.bmBitsPixel,
NULL);
hbmOld2=SelectObject(hdcDst,hbm new);
BitBlt(hdcDst,0,0,bm.bmWidth,bm.bmHeight,hdcSrc,0,0,src copy);
SelectObject(hdcSrc,HB mold);
SelectObject(hdcDst,HB mold 2);
DeleteDC(hdcSrc);
DeleteDC(hdc dst);
返回hbmNew
}
如有任何问题,请留言或与本站社区讨论。感谢阅读,希望能帮到你。感谢您对本站的支持!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。