CDC::BitBlt

BOOL BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop );

返回值:函数成功,返回非零值,否则为0。

参数:
x指定目标矩形左上角的逻辑x坐标。
y指定目标矩形左上角的逻辑y坐标。
nWidth指定目标矩形和源位图的宽度(逻辑单位)。
nHeight指定目标矩形和源位图的高度(逻辑单位)。
pSrcDC指向CDC对象的指针,标识待拷贝位图的设备上下文。如果dwRop指定不包括源的光栅操作,则它必须为NULL。
xSrc指定源位图左上角的逻辑X坐标。
ySrc指定源位图左上角的逻辑Y坐标。
dwRop指定要执行的光栅操作。光栅操作代码定义GDC如何合并输出操作中的颜色,包括当前画刷、可能的源位图和目标位图。
下面对dwRop列出光栅操作代码及其描述:
BLACKNESS所有输出变黑。
DSTINVERT反转目标位图。
MERGECOPY使用布尔AND操作符合并特征与源位图。
MERGEPAINT使用布尔OR操作符合并特征与源位图。
NOTSRCCOPY拷贝反转源位图到目标。
NOTSRCERASE反转使用布尔OR操作符合并源和目标位图的结果。
PATCOPY拷贝特征到目标位图。
PATINVERT使用布尔XOR操作符合并目标位图和特征。
PATPAINT使用布尔OR操作符合并反转源位图和特征。用布尔OR操作符合并这项操作结果与目标位图。
SRCAND使用布尔AND操作符合并目标像素和源位图。
SRCCOPY拷贝源位图到目标位图。
SRCERASE反转目标位图并用布尔AND操作符合并这个结果和源位图。
SRCINVERT使用布尔XOR操作符合并目标像素和源位图。
SRCPAINT使用布尔OR操作符合并目标像素和源位图。
WHITENESS所有输出变白。
有关光栅操作代码的完整列表,请参阅联机文档“Win32 SDK程序员参考”附录节中的“关于光栅操作代码”。

说明:
从源设备上下文拷贝位图到这个当前设备上下文。
应用可以在字节边界上对齐窗口或客户区域,保证BitBlt操作发生在以字节对齐的矩形上(登记窗口类时设置设备CS_BYTEALLGNWINDOW或CS_BYTEALIGHCLIENT标记)。
在字节对齐矩形上的BitBlt操作比未经字节对齐的矩形上的BitBlt操作快许多。如果想对自己的设备上下文指定字节对齐类风格,必须登记窗口类而不要依赖Microsoft基本类。可使用全局函数AfxRegisterWndClass。
一旦使用目标设备上下文和使用源设备上下文,GDI变形nWidth和nHeight。如果结果延伸不匹配,必要时GDI使用Windows StretchBlt函数压缩或拉伸源位图。
如果目标、源和特征位图颜色格式不同,BitBlt转换源和特征位图以匹配目标。转换中使用目标位图的前景和背景色。
BitBlt函数把单色位图转换为彩色时,它设置白色(1)为背景色,黑色(0)作为前景色。使用目标设备上下文的背景和前景色。要把彩色转换为单色,BitBlt把与背景色匹配的像素设置为白色,其余所有像素设置为黑色。在从彩色到单色的转换中,BitBlt使用彩色设备上下文的前景和背景色。
注意,并非所有的设备上下文都支持BitBlt。为检查给定设备上下文是否支持BitBlt,使用GetDeviceCaps成员函数并指定RASTERCAPS索引。

请参阅:
CDC::GetDeviceCaps, CDC::PatBlt, CDC::SetTextColor, CDC::StretchBlt, ::StretchDIBits, ::BitBlt