VC中BitBlt用法用法

MSDN中该函数的定义如下:

 CDC::BitBlt 

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

如果最后一个参数是SRCCOPY(Copies the source bitmap tothe destinationbitmap)大概功能是位图的移动用。它是将一幅位图从一个设备场景复制到另一个,源和目标DC相互间必须兼容。

应用于内存绘图时,

pDC是一个已经到的设备上下文的情况下,数据绘图的一个方法,代码如下:

 CBitmap memBitmap;//内存绘图
 CBitmap* pOldBmp = NULL;
 
 memDC.CreateCompatibleDC(pDC);   //创建内存绘图设备          
 memBitmap.CreateCompatibleBitmap(pDC,rect.right,rect.bottom);
 pOldBmp =memDC.SelectObject(&memBitmap);
 memDC.BitBlt(rect.left,rect.top,rect.right,rect.bottom,pDC,0,0,SRCCOPY);
 
 BgdMethod(&memDC,rect);  //绘制背景
 CurveMethod(&memDC);

 pDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,&memDC,0,0,SRCCOPY);//把内存绘图拷贝到屏幕
 
 memDC.SelectObject(pOldBmp);
 memDC.DeleteDC();
 memBitmap.DeleteObject();
 ReleaseDC(pDC);

 

BOOL CreateCompatibleBitmap( CDC* pDC, int nWidth, int nHeight);

用于初始化一个与pDC指定的设备上下文兼容的位图。位图与指定的设备上下文具有相同的颜色位面数或者相同的像素数。

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。最后,我们清理了资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值