为了调试方便,将CRgn rgn对象以图片形式输出,便于查看
{
 CRgn rgn
 int w = m_lpShapePoints[4].x+4;
 int h = m_lpShapePoints[4].y+4;
 HWND hDesk = GetDesktopWindow();
 HDC hDC = ::GetDC(hDesk);
 CMemDC MemDC(hDC, CSize(w, h), 0);
 for (int x=0; x<w; x++)
 {
  for (int y=0; y<h; y++)
  {
   CPoint pt(x, y);
   if (rgn.PtInRegion(pt))
   {
    CDC *pDC = CDC::FromHandle(MemDC.GetMemDC());
    pDC->SetPixel(x, y, RGB(255, 0, 0));
   }
  }
 }

SaveBitmap(MemDC.GetHBITMAP(), _T("c:\\rgnoutput.bmp");
  ::ReleaseDC(hDesk, hDC);
}

BOOL SaveBitmap(HBITMAP hBitmap, LPCTSTR ptzFileName)
{
 HDC hDC;
 DWORD dwSize;
 BOOL bReturn;
 LPBYTE pBits;
 HANDLE hFile;
 BITMAP bmBitmap;
 BITMAPFILEHEADER bfhFile;
 BITMAPINFOHEADER bihInfo;

// 返回值初始化为 FALSE
 bReturn = FALSE;
 // 取得屏幕兼容位图的对象信息
 if (GetObject(hBitmap, sizeof(BITMAP), &bmBitmap))
 {
  // 设置 BITMAPINFOHEADER 结构
  bihInfo.biSize = sizeof(BITMAPINFOHEADER);
  bihInfo.biWidth = bmBitmap.bmWidth;
  bihInfo.biHeight = bmBitmap.bmHeight;
  bihInfo.biPlanes = 1;
  bihInfo.biBitCount = 24;
  bihInfo.biCompression = BI_RGB;
  bihInfo.biSizeImage =  _WidthPitch(bmBitmap.bmWidth) * bmBitmap.bmHeight;
  bihInfo.biXPelsPerMeter = 0;
  bihInfo.biYPelsPerMeter = 0;
  bihInfo.biClrUsed = 0;
  bihInfo.biClrImportant = 0;

// 设置 BITMAPFILEHEADER 结构
  bfhFile.bfType = 0x4D42;  // "BM"
  bfhFile.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + bihInfo.biSizeImage;
  bfhFile.bfReserved1 = 0;
  bfhFile.bfReserved2 = 0;
  bfhFile.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);

// 分配内存
  pBits = (LPBYTE) HeapAlloc(GetProcessHeap(), 0, bihInfo.biSizeImage);
  if (pBits)
  {
   // 获取屏幕设备场景
   hDC = CreateIC(_T("DISPLAY"), NULL, NULL, NULL);

// 获取 DIB 数据
   if (GetDIBits(hDC, hBitmap, 0, bmBitmap.bmHeight,
    pBits, (LPBITMAPINFO) &bihInfo, DIB_RGB_COLORS))
   {
    // 创建文件
    hFile = CreateFile(ptzFileName, GENERIC_WRITE, 0, NULL,
     CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
    if (hFile != INVALID_HANDLE_VALUE)
    {
     // 写入 BITMAPFILEHEADER  信息
     bReturn = WriteFile(hFile, &bfhFile, sizeof(BITMAPFILEHEADER), &dwSize, 0);
     if (bReturn)
     {
      // 写入 BITMAPINFOHEADER 信息
      bReturn = WriteFile(hFile, &bihInfo, sizeof(BITMAPINFOHEADER), &dwSize, 0);
      if (bReturn)
      {
       // 写入 DIB 数据
       bReturn = WriteFile(hFile, pBits, bihInfo.biSizeImage, &dwSize, 0);
      }
     }

// 关闭文件句柄
     CloseHandle(hFile);
    }
   }

// 删除设备场景,释放内存
   DeleteDC(hDC);
   HeapFree(GetProcessHeap(), 0, (LPVOID) pBits);
  }
 }

return bReturn;
 return 0;
}

转载于:https://www.cnblogs.com/carl2380/archive/2010/12/29/1919539.html

将CRgn rgn对象以图片形式输出便于查看相关推荐

  1. 请求一个action,将图片的二进制字节字符串在视图页面以图片形式输出

    有些时候需要将二进制图片字节在发送浏览器以图片形式显示: 下面是一些示例代码: 控制器: 1 /// <summary> 2 /// 将图片的二进制字节字符串在视图页面以图片形式输出 3 ...

  2. MNIST数据集转为图片形式输出

    前期工作 1.请注意运行代码存入的文件夹的名称,要与代码中的path路径对应一致: 2.下载MNIST数据集(四个压缩包),并将四个压缩包的内容解压出来,如下图①: 3.在运行代码目录下,建立data ...

  3. 将图片的二进制字节字符串在HTML页面以图片形式输出

    具体实现代码如下: 1.新建一个一般处理程序: Image.ashx 1 using System; 2 using System.Collections.Generic; 3 using Syste ...

  4. python以环状形式组合排列图片并输出的方法

    python以环状形式组合排列图片并输出的方法 本文实例讲述了python以环状形式组合排列图片并输出的方法.分享给大家供大家参考.具体分析如下: 这段代码可以自定义一个空白画板,然后将指定的图片以圆 ...

  5. php图片输出代码怎么写,将数据以图片的形式输出的PHP代码

    <?php echo " "; echo ""; ?> logo.jpg文件和应该是这样写 去见你想见的人吧.趁阳光正好,趁微风不噪,趁繁花还未开至 ...

  6. Opencv学习笔记(一):如何将得到的图片保存在指定目录以及如何将文件夹里所有图片以数组形式输出

    文章目录 1.图片保存在指定目录 1.1实际实例 2.文件夹里所有图片以数组形式输出 2.1实际代码 1.图片保存在指定目录 在opencv中用于保存图片所用到的语句是cv2.imwrite(file ...

  7. java对象转xml 高性能_通过实例学习JAVA对象转成XML输出

    一.总体说明 XML和JSON 是最为常用的数据交换格式 本例子演示如何将java对象,转成XML输出. 二.流程 1.在上文的例子中,创建一个包"com.waylau.rest.bean& ...

  8. 关于ES6中Promise的应用-顺序合并Promise,并将返回结果以数组的形式输出

    1.Promise 基础知识梳理 创建一个Promise实例 const promise = new Promise(function(resolve, reject) {if (success){r ...

  9. 网页嵌入对象(图片、视频、网页)

    在网页中嵌入对象,实际上并不会在网页中插入对象,而是通过某种标签链接到指定的对象,标签创建的只是被引用对象的占位符而已. 嵌入式对象主要包括图片.视频.音频.文档等,不同的对象使用不同的标签,并具有不 ...

最新文章

  1. Java基础——异常处理
  2. elasticsearch 6.6 安装(CentOS 7.5) 修订
  3. 架构师成长之路(内附推荐书籍)
  4. android progressdialog 样式,android之修改系统自带ProgressDialog样式
  5. C# 生成全球唯一标识符
  6. android cygwin离线安装包,Cygwin配合NDK开发Android程序
  7. 不限流量的物联卡是否真存在
  8. [渝粤教育] 武汉理工大学 复变函数与积分变换 参考 资料
  9. 计算机无法检测到键盘,检测到不兼容的键盘驱动程序,小编教你电脑提示检测到不兼容的键盘驱动怎么办...
  10. Algorithm——A*路径规划算法原理详解
  11. linux英文论文范例,Argument essay官方主题范文三十六篇-经典英文议论文范例
  12. 汇集各种 webservice工厂,快递,ip,天气,身份证,手机,翻译,火车时刻,股票,邮编,二维码,公交,ISBN,ICP 查询接口 API
  13. 程序开发必备利器—英特尔Core i5开发机
  14. win11 22H2 连接共享打印机失败
  15. 2022年版中国煤矿安全设备市场投资规划及需求前景预测报告
  16. BPM- Eteams体验报告
  17. MySQL InnoDB Cluster部署
  18. 自己如何快速制作蓝色背景证件照
  19. 【Paper】2017_Consensus of linear multi-agent systems with exogenous disturbance generated from hetero
  20. 操作系统_第三章处理器管理_批处理作业的调度算法

热门文章

  1. tried to access method com.google.common.base.Stopwatch
  2. windows下面的文件拷贝到linux下面出现乱码
  3. 大话数据结构 : 二叉排序树
  4. Python学习笔记——glob模块【文件、路径操作】
  5. 将存储过程的结果插入表里
  6. 计算机网络技术通识试题,超星计算机网络技术章节答案
  7. php 新浪面试题,新浪网技术部笔试题
  8. 理解React-组件生命周期
  9. 持续集成之 Jenkins 的安装与配置(一)
  10. Windows下的bat原来可以为我们做很多