[已搞定]将CDC*的SetPixel保存起来,该如何解决
[已搞定]将CDC*的SetPixel保存起来
先上代码:
使用如下代码完美解决
------解决方案--------------------
大家前来领分,1楼20分,2楼10分,3-4楼各5分。
------解决方案--------------------
恭喜‘完美解决’
------解决方案--------------------
我来了,感谢楼主
先上代码:
- C/C++ code
// 获取尺寸 int m_nSymbleSize = pQR_Encode->m_nSymbleSize + (QR_MARGIN * 2); CBitmap* m_pSymbleBitmap = new CBitmap; m_pSymbleBitmap->CreateBitmap(m_nSymbleSize, m_nSymbleSize, 1, 1, NULL); CDC* m_pSymbleDC = ((CStatic*)GetDlgItem(IDC_BITMAP_1))->GetDC(); m_pSymbleDC->PatBlt(0, 0, m_nSymbleSize, m_nSymbleSize, WHITENESS); m_pSymbleDC->SelectObject(m_pSymbleBitmap); for (int i = 0; i < pQR_Encode->m_nSymbleSize; ++i) { for (int j = 0; j < pQR_Encode->m_nSymbleSize; ++j) { if (pQR_Encode->m_byModuleData[i][j]) { m_pSymbleDC->SetPixel(i + QR_MARGIN, j + QR_MARGIN, RGB(0, 0, 0)); } } } // 图片保存的结果为黑色,但上面m_pSymbleDC->SetPixel却是图案 // 此函数来自 http://hi.baidu.com/gzjurkbqwynvxye/item/d2780bc65583e853bdef6916 SaveBitmapToFile(m_pSymbleBitmap,_TEXT("C:\\Users\\Sollyu\\Desktop\\1.bmp"));
使用如下代码完美解决
- C/C++ code
HBITMAP CQRDlg::GetSrcBit(HDC hDC,DWORD BitWidth, DWORD BitHeight) { HDC hBufDC; HBITMAP hBitmap, hBitTemp; //创建设备上下文(HDC) hBufDC = CreateCompatibleDC(hDC); //创建HBITMAP hBitmap = CreateCompatibleBitmap(hDC, BitWidth, BitHeight); hBitTemp = (HBITMAP) SelectObject(hBufDC, hBitmap); //得到位图缓冲区 StretchBlt(hBufDC, 0, 0, BitWidth, BitHeight, hDC, 0, 0, BitWidth, BitHeight, SRCCOPY); //得到最终的位图信息 hBitmap = (HBITMAP) SelectObject(hBufDC, hBitTemp); //释放内存 ::DeleteDC(hBufDC); return hBitmap; }
------解决方案--------------------
大家前来领分,1楼20分,2楼10分,3-4楼各5分。
------解决方案--------------------
恭喜‘完美解决’
------解决方案--------------------
我来了,感谢楼主