CDC::BitBlt用法

CDC::BitBlt用法

功能说明:

      Bitblt作用将某一内存块的数据传送到另一内存块,前一内存块被称为 "源 ",后一内存块被称为 "目标 "图象程序开发者使用Blit的函数在内存中将某页面上的一幅位图经过一定的变换转移到另一个页面上

 

定义:

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

参数:
hDestDC   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   用白色填充目标矩形区域.


实例:
void CMainDlg::DrawToolPhotoButton(CDC &dc)
{
CDC memDC ;
memDC.CreateCompatibleDC ( &dc ) ;

CBitmap* pBitmap ; //load all bitmap
CBitmap* pOldBitmap ; //save old bitmap temp

//.............................................................
//分配bitmap对象内存
pBitmap = new CBitmap ;


pBitmap ->LoadBitmap ( IDB_GPS_B ) ;
pOldBitmap = memDC.SelectObject ( pBitmap ) ;

//将图片COPY到指定的像素位置
dc.BitBlt ( 111,111, 111, 111, &memDC, 0, 0, SRCCOPY ) ;

memDC.SelectObject ( pOldBitmap ) ;

//释放bitmap对象内存
delete pBitmap ;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MFC中的`BitBlt`函数是用于位图的显示和复制的函数。它的原型如下: ```cpp BOOL BitBlt( HDC hdcDest, // 目标DC的句柄 int nXDest, // 目标矩形左上角的x坐标 int nYDest, // 目标矩形左上角的y坐标 int nWidth, // 目标矩形的宽度 int nHeight, // 目标矩形的高度 HDC hdcSrc, // 源DC的句柄 int nXSrc, // 源矩形左上角的x坐标 int nYSrc, // 源矩形左上角的y坐标 DWORD dwRop // 光栅操作代码 ); ``` 其中,`hdcDest`和`hdcSrc`分别是目标DC和源DC的句柄,`nXDest`、`nYDest`、`nWidth`和`nHeight`描述了目标矩形的位置和大小,`nXSrc`和`nYSrc`描述了源矩形的位置,`dwRop`是光栅操作代码,控制复制操作的行为。 下面是一个简单的示例代码,演示了如何使用`BitBlt`函数复制一个位图: ```cpp CBitmap bmp; CDC dcMem; CRect rect; // 加载位图 bmp.LoadBitmap(IDB_BITMAP1); // 获取位图大小 bmp.GetBitmap(&bm); // 获取目标DC CClientDC dc(this); // 创建源DC dcMem.CreateCompatibleDC(&dc); // 选择位图到源DC中 CBitmap* pOldBitmap = dcMem.SelectObject(&bmp); // 获取目标区域 GetClientRect(&rect); // 复制位图到目标DC中 dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dcMem, 0, 0, SRCCOPY); // 清理资源 dcMem.SelectObject(pOldBitmap); bmp.DeleteObject(); dcMem.DeleteDC(); ``` 在这个示例中,我们首先加载了一个位图,并获取了它的大小。然后,我们获取了目标DC,并创建了一个与之兼容的源DC。接着,我们选择位图到源DC中,并使用`BitBlt`函数将位图复制到目标DC中。最后,我们清理了资源。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值