bitblt与StretchDIBits

来源:互联网 发布:js修改button的文字 编辑:程序博客网 时间:2024/06/17 04:01

1.BitBlt 
BitBlt 用于从原设备中复制位图到目标设备,语法格式如下: 
BOOL BitBlt( 
HDC hdcDest, // handle to destination DC 
int nXDest, // 目标矩形区域的左上角x轴坐标点。 
int nYDest, // 目标矩形区域的左上角y轴坐标点。 
int nWidth, // 在目标设备中绘制位图的宽度。 
int nHeight, // 在目标设备中绘制位图的高度。 
HDC hdcSrc, // 源设备上下文对象指针。 
int nXSrc, // 源设备上下文的起点x轴坐标,函数从该起点复制位图到目标设备。 
int nYSrc, // 源设备上下文的起点y轴坐标,函数从该起点复制位图到目标设备。 
DWORD dwRop // 光栅操作代码 
); 
dwRop有如下选择: 
BLACKNESS 使用黑色填充目标区域 
DSTINVERT 目标矩阵区域颜色取反 
MERGECOPY 使用与运算组合原设备矩形区域的颜色和目标设备的画刷 
MERGEPAINT 使用或运算将反向的源矩形区域的颜色和目标矩形区域的颜色合并 
NOTSRCCOPY 复制源设备区域的反色到目标设备中 
NOTSRCERASE 使用或运算组合源设备区域与目标设备区域的颜色,然后对结果颜色取反 
PATCOPY 复制源设备当前选中的画刷到目标设备 
PATINVERT 使用异或运算组合目标设备选中的画刷和目标设备区域的颜色 
PATPAINT 通过或运算组合目标区域当前选中的画刷和源设备区域反转的颜色 
SRCAND 使用与运算组合源设备和目标设备区域的颜色 
SRCCOPY 直接复制源设备区域到目标设备中 
SRCERASE 使用与运算组合目标设备区域的反色与源设备区域的颜色 
SRCINVERT 使用异或运算组合源设备区域颜色和目标设备区域颜色 
SRCPAINT 使用或运算组合源设备区域颜色和目标设备区域颜色 
WHITENESS 使用白色填充目标区域

2.StretchDIBits 
int StretchDIBits( 
HDC hdc, // handle to DC 
int XDest, // 指定目标矩形左上角的X轴坐标,按逻辑单位表示坐标。 
int YDest, // 指定目标矩形左上角的Y轴坐标,按逻辑单位表示坐标。 
int nDestWidth, // 指定目标矩形的宽度,按逻辑单位表示宽度。 
int nDestHeight, // 指定目标矩形的高度,按逻辑单位表示高度。 
int XSrc, // 指向源矩形区域左上角的X轴坐标,按逻辑单位表示坐标。 
int YSrc, // 指向源矩形区域左上角的Y轴坐标,按逻辑单位表示坐标。 
int nSrcWidth, // 指定源矩形的宽度,按逻辑单位表示宽度。 
int nSrcHeight, // 指向源矩形区域左上角的Y轴坐标,按逻辑单位表示坐标。 
CONST VOID *lpBits, // 指向DIB位的指针,这些位的值按字节类型数组存储 
CONST BITMAPINFO *lpBitsInfo, // 指向BITMAPINFO结构的指针,该结构包含有关DIB方面的信息。 
UINT iUsage, // 表示是否提供了BITMAPINFO结构中的成员bmiColors,如果提供了,那么该bmiColors是否包含了明确的RGB值或索引。 
DWORD dwRop // 光栅操作代码 
); 
BITMAPINFO结构具有如下形式: 
typedef struct tagBITMAPINFO 

BITMAPINFOHEADER bmiHeader; 
RGBQUAD bmiColors[1]; 
} BITMAPINFO; 
其中bmiHeader.biHeight表示图像的高度,但是它可以负值,例如:如果图像大小为512*512,那么 
bmiHeader.biHeight = 512 则图像原点在左下角; 
bmiHeader.biHeight = -512 则图像原点在左上角; 

原创粉丝点击