将CRgn rgn对象以图片形式输出便于查看
来源:互联网 发布:出口退税明细数据录入 编辑:程序博客网 时间:2024/05/05 18:46
为了调试方便,将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;
}
- 将CRgn rgn对象以图片形式输出便于查看
- 将数据以二进制形式输出
- 杂谈——如何将字符串以语音形式输出
- C语言 将int型数据以二进制形式输出
- 将整数以二进制的形式输出来
- xml 将xml文档以表格的形式输出
- C#控制台 将变量以百分比的形式输出
- 将整数以字符串的形式逆序输出
- 将数从大到小输出以矩阵形式
- 将输入的数组以矩阵形式输出
- 将图片以二进制形式存入数据库中
- iPhone开发之将pdf以图片形式显示
- 将图片以二进制代码形式存入数据库
- C#将图片以二进制形式保存数据库
- C# 将界面打印成图片,以PDF形式打开
- JAVA将图片以二进制形式存入Access数据库
- java以流的形式将文字写在图片上
- js以字符串的形式将图片上传到服务器
- 编辑框只能输入一个小数点
- 同步 异步 阻塞 非阻塞
- Jsp+Dao+Jdbc+Servelet 用户完整登录总结
- VB操作EXCEL
- asp.net 单用户登录(系统中只允许同一账户的一个存在--排它多处登录)
- 将CRgn rgn对象以图片形式输出便于查看
- 保护模式下的段关系
- 如何解决:默认库“msvcrtd.lib”与其他库的使用冲突
- 自己写的硬盘锁
- 创业者,你必须问自己三个问题 movno1-穆利堂
- 很久以前写的"猜数字"游戏 (汇编版)
- asp.net 单点登录
- barber 理发师 She is still mad at me.
- Trouble Shooting - [39008]Logical dimension table TABLE_X has a source TABLE_X_SOURCE that does not join to any fact source.