MFC 复制某个区域到剪切板 bitblt

[cpp]  view plain  copy
  1. CDC* pScreenDc = CDC::FromHandle(::GetDC(NULL));<span style="white-space:pre">    </span>//屏幕DC  
  2. CDC memDc;<span style="white-space:pre">  </span>// 内存DC  
  3. CBitmap memBmp;  
  4. CBitmap* pOldBmp;  
  5. int cx = GetSystemMetrics(SM_CXSCREEN);  
  6. int cy = GetSystemMetrics(SM_CYSCREEN);  
  7. memDc.CreateCompatibleDC(pScreenDc);  
  8. memBmp.CreateCompatibleBitmap(pScreenDc, cx, cy);  
  9. pOldBmp = memDc.SelectObject(&memBmp);  
  10. memDc.BitBlt(0, 0, cx, cy, pScreenDc, 0, 0, SRCCOPY);  
  11.   
  12. //复制到剪切板  
  13. OpenClipboard();  
  14. EmptyClipboard();  
  15. SetClipboardData(CF_BITMAP, memBmp.Detach());  
  16. CloseClipboard();  
  17.   
  18. // 显示到当前界面  
  19. CClientDC clientDc(this);  
  20. CRect rcClient;  
  21. GetClientRect(rcClient);  
  22. clientDc.StretchBlt(0, 0, rcClient.Width(), rcClient.Height(), &memDc, 0, 0, cx, cy, SRCCOPY);  
  23.   
  24. memDc.SelectObject(pOldBmp);  
  25. memDc.DeleteDC();  
  26. memBmp.DeleteObject();  







  1. BitBlt  
  2.   
  3. 设备上下文绘图有很多种方法。例如通过创建位图画刷,利用其填充一个区域来实现图像的绘制。此外,还可以使用CDC类的位图函数来输出位图到设备上下文中。  
  4.   
  5. BitBlt 用于从原设备中复制位图到目标设备,语法格式如下:  
  6.   
  7. BOOLBitBlt(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSrc,int ySrc,DWORDdwRop);  
  8.   
  9. x:目标矩形区域的左上角x轴坐标点。  
  10.   
  11. y:目标矩形区域的左上角y轴坐标点。  
  12.   
  13. nWidth:在目标设备中绘制位图的宽度。  
  14.   
  15. nHight:在目标设备中绘制位图的高度。  
  16.   
  17. pSrcDC:源设备上下文对象指针。  
  18.   
  19. xSrc:源设备上下文的起点x轴坐标,函数从该起点复制位图到目标设备。  
  20.   
  21. ySrc:源设备上下文的起点y轴坐标,函数从该起点复制位图到目标设备。  
  22.   
  23. dwRop:光栅操作代码  
  24. dwRop有如下选择:  
  25.   
  26. BLACKNESS           使用黑色填充目标区域  
  27.   
  28. DSTINVERT              目标矩阵区域颜色取反  
  29.   
  30. MERGECOPY            使用与运算组合原设备矩形区域的颜色和目标设备的画刷  
  31.   
  32. MERGEPAINT           使用或运算将反向的源矩形区域的颜色和目标矩形区域的颜色合并  
  33.   
  34. NOTSRCCOPY          复制源设备区域的反色到目标设备中  
  35.   
  36. NOTSRCERASE        使用或运算组合源设备区域与目标设备区域的颜色,然后对结果颜色取反  
  37.   
  38. PATCOPY                  复制源设备当前选中的画刷到目标设备  
  39.   
  40. PATINVERT               使用异或运算组合目标设备选中的画刷和目标设备区域的颜色  
  41.   
  42. PATPAINT                 通过或运算组合目标区域当前选中的画刷和源设备区域反转的颜色  
  43.   
  44. SRCAND                   使用与运算组合源设备和目标设备区域的颜色  
  45.   
  46. SRCCOPY                 直接复制源设备区域到目标设备中  
  47.   
  48. SRCERASE               使用与运算组合目标设备区域的反色与源设备区域的颜色  
  49.   
  50. SRCINVERT              使用异或运算组合源设备区域颜色和目标设备区域颜色  
  51.   
  52. SRCPAINT                 使用或运算组合源设备区域颜色和目标设备区域颜色  
  53.   
  54. WHITENESS             使用白色填充目标区域  

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值