日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将CRgn rgn对象以图片形式输出便于查看 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為了調(diào)試方便,將CRgn rgn對(duì)象以圖片形式輸出,便于查看
{
?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;
?// 取得屏幕兼容位圖的對(duì)象信息
?if (GetObject(hBitmap, sizeof(BITMAP), &bmBitmap))
?{
??// 設(shè)置 BITMAPINFOHEADER 結(jié)構(gòu)
??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;

??// 設(shè)置 BITMAPFILEHEADER 結(jié)構(gòu)
??bfhFile.bfType = 0x4D42;??// "BM"
??bfhFile.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + bihInfo.biSizeImage;
??bfhFile.bfReserved1 = 0;
??bfhFile.bfReserved2 = 0;
??bfhFile.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);

??// 分配內(nèi)存
??pBits = (LPBYTE) HeapAlloc(GetProcessHeap(), 0, bihInfo.biSizeImage);
??if (pBits)
??{
???// 獲取屏幕設(shè)備場(chǎng)景
???hDC = CreateIC(_T("DISPLAY"), NULL, NULL, NULL);

???// 獲取 DIB 數(shù)據(jù)
???if (GetDIBits(hDC, hBitmap, 0, bmBitmap.bmHeight,
????pBits, (LPBITMAPINFO) &bihInfo, DIB_RGB_COLORS))
???{
????// 創(chuàng)建文件
????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 數(shù)據(jù)
???????bReturn = WriteFile(hFile, pBits, bihInfo.biSizeImage, &dwSize, 0);
??????}
?????}

?????// 關(guān)閉文件句柄
?????CloseHandle(hFile);
????}
???}

???// 刪除設(shè)備場(chǎng)景,釋放內(nèi)存
???DeleteDC(hDC);
???HeapFree(GetProcessHeap(), 0, (LPVOID) pBits);
??}
?}

?return bReturn;
?return 0;
}

轉(zhuǎn)載于:https://www.cnblogs.com/carl2380/archive/2010/12/29/1919539.html

總結(jié)

以上是生活随笔為你收集整理的将CRgn rgn对象以图片形式输出便于查看的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。