内存DC的问题

dfyang 2005-03-26 11:39:43
在OnDraw中的代码如下:
CRect rect;
GetClientRect(&rect);
m_rectCurve=rect;

CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.FillSolidRect(&rect,RGB(0,0,0));
DrawBkGround(&memDC);
DrawCurve(&memDC);

pDC->BitBlt( rect.left, rect.top, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY );

结果是什么也没画出来,不知道为什么?
...全文
124 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjcode 2005-03-26
  • 打赏
  • 举报
回复
没错,你首先得建一张空的位图,把它选入这个memDC里。

然后才能在上面绘制.

HDC hDC = ::GetDC(m_hWnd);

HDC hbmpDC = CreateCompatibleDC(hDC);
HBITMAP hOldBitmap = (HBITMAP)::SelectObject(hbmpDC,m_Background);
BitBlt(hDC,0,0,bm.bmWidth,bm.bmHeight,hbmpDC,0,0,SRCCOPY);
SelectObject(hDC,hOldBitmap);
DeleteObject(hbmpDC);

HPEN hPen = ::CreatePen(PS_DASH,10,RGB(128,128,128));
HPEN hOldPen = (HPEN)SelectObject(hDC,hPen);

MoveToEx(hDC,20,20,NULL);
LineTo(hDC , 100 , 100);

SelectObject(hDC,hOldPen);
DeleteObject(hPen);
::ReleaseDC(m_hWnd,hDC);

dfyang 2005-03-26
  • 打赏
  • 举报
回复
嗯,自己先搞定了,正如楼主所说的一样。还是要感谢楼主的热心帮忙
waterpub 2005-03-26
  • 打赏
  • 举报
回复
创建一个bitmap选到memdc里面,不然你的图形怎么画到memdc呢?
CRect rect;
GetClientRect(&rect);
m_rectCurve=rect;

CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.FillSolidRect(&rect,RGB(0,0,0));
CBitmap* m_bitmap;
CBitmap* m_OldBitmap;
m_bitmap = new CBitmap();
m_OldBitmap = (cbitmap*)memdc.selectobject(m_bitmap);
DrawBkGround(&memDC);
DrawCurve(&memDC);

pDC->BitBlt( rect.left, rect.top, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY );


m_bitmap.deleteobject();
dfyang 2005-03-26
  • 打赏
  • 举报
回复
不会吧,没人知道?

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧