Bitblt作用将某一内存块的数据传送到另一内存块,前一内存块被称为"源",后一内存块被称为"目标"图象程序开发者使用Blit的函数在内存中将某页面上的一幅位图经过一定的变换转移到另一个页面上原形说明:Declare Function 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 LonghDestDC As Long, //目标设备环境的句柄x As Long, //目标设备环境的矩形区域的左上角的x坐标y As Long, //目标设备环境的矩形区域的左上角的y坐标nWidth As Long, //目标设备环境的矩形区域的宽度值nHeight As Long, //目标设备环境的矩形区域的高度值hSrcDC As Long, //源设备环境的句柄xSrc As Long, //源设备环境的矩形区域的左上角的x坐标ySrc As Long, //源设备环境的矩形区域的左上角的y坐标dwRop As Long, //光栅操作符dwRop参数是光栅操作代码(Rop),它是指源位图与目标位图以及图案刷的颜色值进行布尔运算的方式,以下列出了常用的光栅操作码及含义BLACKNESS 用黑色填充目标矩形区域.DSTINVERT 将目标矩形图象进行反相. MERGECOPY 将源矩形图象与指定的图案刷(Pattern)进行布尔"与"运算. MERGEPAINT 将源矩形图形经过反相后,与目标矩形图象进行布尔"或"运算.NOTSRCCOPY 将源矩形图象经过反相后,复制到目标矩形上.NOTSRCERASE 先将源矩形图象与目标矩形图象进行布尔"或"运算,然后再将得图象进行反相.PATCOPY 将指定的图案刷复制到目标矩形上.PATINVERT 将指定的图案刷与目标矩形图象进行布尔"异或"运算.PATPAINT 先将源矩形图象进行反相,与指定的图案刷进行布尔"或"运算,再与目标矩形图象进行布尔"或"运算SRCAND 将源矩形图象与目标矩形图象进行布尔"与"运算.SRCCOPY 将源矩形图象直接复制到目标矩形上.SRCERASE 将目标矩形图象进行反相,再与源矩形图象进行布尔"与"运算.SRCINVERT 将源矩形图象与目标矩形图象进行布尔"异或"运算.SRCPAINT 将源矩形图象与目标矩形图象进行布尔"或"运算.WHITENESS 用白色填充目标矩形区域. Bitblt函数的使用可以有效的防止图像的闪烁问题。具体的做法如下代码所示: CDC *PdC=GetDC(); CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); CDC memDC; memDC.CreateCompatibleDC(PdC); memDC.SelectObject(&bitmap); BITMAP bmpInfo; bitmap.GetObject(sizeof(bmpInfo),&bmpInfo); PdC->BitBlt(0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,&memDC,0,0,SRCCOPY); ReleaseDC(PdC);希望以上对大家有用!
