windows程序设计笔记(9)

位图和BitBlt
1.位块传送BitBlt(bit-block transfer读作"bit blit"),函数实际上对像素执行了一次位运算操作
BitBlt(hdcDest,xDst,yDst,cx,cy,hdcSrc,xSrc,ySrc,dwROP)  //源设备描述表中将一个矩形区的像素传送到目标的另一个设备描述表中相同大小的矩形区.
StretchBlt(hdcDst,xDst,yDst,cxDst,cyDst,hdcSrc,xSrc,yrc,cxSrc,cySrc,dwROP),SetStretchBltMode(hdc,iMode) //拉伸或压缩使用
PatBlt(hdc,x,y,cx,cy,dwROP)

光栅操作常用的:
SRCCOPY 目的=源
PATCOPY 忽略源和目的,复制图案
NOTSRCCOPY 源取反色

2.GDI位图对象
DDB的创建HBITMAP = CreateBitmap(cx,cy,cPlanes,cBitsPixel,bits)
1)单色位图的创建 cPlanes=1 cBitsPixel=1
2)特定设备描述表的值 使用CreateCompatibleBitmap(hdc,cx,cy) //创建与设备描述表句柄兼容的位图对象
3)CreateBitmapIndirect(BITMAP*)

3.内存设备描述表
hdcMem = CreateCompatibleDC(hdc)//hdc为实际设备的描述表句柄 使用完之后要DeleteDC 初始时为单色,1像素高和宽
SelectObject(hdcMem, hBitmap)  //选人一个GDI位图对象

4.非矩形位图图像
使用掩码技术

与设备无关的位图(DIB)
dib文件结构:文件头,信息头,色彩表(不一定有),位图像素位
紧缩dib内存结构:信息头,色彩表(不一定有),位图像素位
BITMAPFILEHEADER, BITMAPCOREHEADER, RGBTRIPLE

posted @ 2012-06-19 10:14  让代码飞一会儿  阅读(236)  评论(0编辑  收藏  举报