bitblt(BitBlt参数详解[通俗易懂])
一、请教一下mfc中bitblt各个参数的具体含义
32,32是拷贝dc到pDC的左上角32,32的位置
160,160是拷贝dc的宽度和高度(以像素为单位)
0,0是从dc的左上角0.0的位置开始拷贝
SRCCOPY拷贝源位图到目标位图
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索引。
二、[VB].. BitBlt 的具体用法!!详细!!!
BitBlt目标hDC,目标X,目标Y,图像高,图像宽,源hDC,源X,源Y,光栅运算常数
【函数】
BitBlt
【操作系统】
Win9X:Yes
WinNT:Yes
【声明】
BitBlt Lib"gdi32" Alias"BitBlt"(ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
【说明】
将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容
【返回值】
Long,非零表示成功,零表示失败。会设置GetLastError
【其它】
在NT环境下,如在一次世界传输中要求在源设备场景中进行剪切或旋转处理,这个函数的执行会失败
如目标和源DC的映射关系要求矩形中像素的大小必须在传输过程中改变,那么这个函数会根据需要自动伸缩、旋转、折叠、或切断,以便完成最终的传输过程
【参数表】
hDestDC-------- Long,目标设备场景
x,y------------ Long,对目标DC中目标矩形左上角位置进行描述的那个点。用目标DC的逻辑坐标表示
nWidth,nHeight- Long,欲传输图象的宽度和高度
hSrcDC--------- Long,源设备场景。如光栅运算未指定源,则应设为0
xSrc,ySrc------ Long,对源DC中源矩形左上角位置进行描述的那个点。用源DC的逻辑坐标表示
dwRop---------- Long,传输过程要执行的光栅运算
三、bitblt函数怎么用啊
bitblt:
该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。
用法参数:
hDestDC:指向目标设备环境的句柄。
x:指定目标矩形区域左上角的X轴逻辑坐标。
y:指定目标矩形区域左上角的Y轴逻辑坐标。
nWidth:指定源在目标矩形区域的逻辑宽度。
nHeight:指定源在目标矩形区域的逻辑高度。
hSrcDC:指向源设备环境的句柄。
xSrc:指定源矩形区域左上角的X轴逻辑坐标。
ySrc:指定源矩形区域左上角的Y轴逻辑坐标。
dwRop:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的颜色。
下面列出了一些常见的光栅操作代码:
BLACKNESS:表示使用与物理调色板的索引0相关的色彩来填充目标矩形区域,(对缺省的物理调色板而言,该颜色为黑色)。
DSTINVERT:表示使目标矩形区域颜色取反。
MERGECOPY:表示使用布尔型的AND(与)操作符将源矩形区域的颜色与特定模式组合一起。
MERGEPAINT:通过使用布尔型的OR(或)操作符将反向的源矩形区域的颜色与目标矩形区域的颜色合并。
NOTSRCCOPY:将源矩形区域颜色取反,于拷贝到目标矩形区域。
NOTSRCERASE:使用布尔类型的OR(或)操作符组合源和目标矩形区域的颜色值,然后将合成的颜色取反。
PATCOPY:将特定的模式拷贝到目标位图上。
PATPAINT:通过使用布尔OR(或)操作符将源矩形区域取反后的颜色值与特定模式的颜色合并。然后使用OR(或)操作符将该操作的结果与目标矩形区域内的颜色合并。
PATINVERT:通过使用XOR(异或)操作符将源和目标矩形区域内的颜色合并。
SRCAND:通过使用AND(与)操作符来将源和目标矩形区域内的颜色合并。
SRCCOPY:将源矩形区域直接拷贝到目标矩形区域。
SRCERASE:通过使用AND(与)操作符将目标矩形区域颜色取反后与源矩形区域的颜色值合并。
SRCINVERT:通过使用布尔型的XOR(异或)操作符将源和目标矩形区域的颜色合并。
SRCPAINT:通过使用布尔型的OR(或)操作符将源和目标矩形区域的颜色合并。
WHITENESS:使用与物理调色板中索引1有关的颜色填充目标矩形区域。(对于缺省物理调色板来说,这个颜色就是白色)。
dwRop Values
From wingdi.h:
#define BLACKNESS 0x42
#define DSTINVERT 0x550009
#define MERGECOPY 0xC000CA
#define MERGEPAINT 0xBB0226
#define NOTSRCCOPY 0x330008
#define NOTSRCERASE 0x1100A6
#define PATCOPY 0xF00021
#define PATINVERT 0x5A0049
#define PATPAINT 0xFB0A09
#define SRCAND 0x8800C6
#define SRCCOPY 0xCC0020
#define SRCERASE 0x440328
#define SRCINVERT 0x660046
#define SRCPAINT 0xEE0086
#define WHITENESS 0xFF0062