##请教一个抓图的问题## 200分!!在线等
我的程序是一个画图程序,类似Drawcli。现在我想把view的客户区显示的一部分图元(保存在m_ShapeList表中)保存到Cbitmap。我是这样做的,大致代码如下:
//创建兼容DC
CView *pView = GetActiveView();
if ((pView == NULL) || (!::IsWindow(pView->m_hWnd)))
return NULL;
CDC* pDC = pView->GetDC();
CDC memDC;
memDC.CreateCompatibleDC(pDC);
//在内存DC中画图元
POSITION pos = m_ShapeList.GetHeadPosition();
while (pos != NULL)
{
CDrawShape* pShape = m_ShapeList.GetNext(pos);
pShape->OnDraw(&memDC);
}
//创建兼容位图并返回
if (pBmp->CreateCompatibleBitmap(&memDC, 800, 600))
{
CDC dc;
dc.CreateCompatibleDC(&memDC);
CBitmap* pOldBmp = dc.SelectObject(pBmp);
BITMAP bm;
pBmp->GetBitmap(&bm);
dc.StretchBlt(0, 0, 800, 600,
&memDC, 0, 0 , bm.bmWidth, bm.bmHeight, SRCCOPY);
pBmp = dc.SelectObject(pOldBmp);
return pBmp;
}
else
return NULL;
结果返回的bitmap没有像素位。问题出在什么地方?请大侠指教,不胜感激!