[已搞定]将CDC*的SetPixel保存起来解决方案
[已搞定]将CDC*的SetPixel保存起来
先上代码:
使用如下代码完美解决
------解决方案--------------------
大家前来领分,1楼20分,2楼10分,3-4楼各5分。
------解决方案--------------------
恭喜‘完美解决’
------解决方案--------------------
我来了,感谢楼主
先上代码:
// 获取尺寸
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"));
使用如下代码完美解决
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分。
------解决方案--------------------
恭喜‘完美解决’
------解决方案--------------------
我来了,感谢楼主