如何在弹出的对话框中绘图

SKzhinengjiagong 2011-10-10 07:29:08
CPaintDC dc(this); // device context for painting
CRect rect;
// CWnd *pWnd;
CWnd* pWnd=this-> GetDlgItem(IDC_PAINT);
//CWnd *p = (CWnd*)GetDlgItem(IDC_PAINT);
//CDC *pDC = p->GetDC();
CDC* pDC=pWnd-> GetDC();
GetClientRect(&rect);
CDC memdc;
CBitmap memBitmap;
memdc.CreateCompatibleDC(&dc);
memBitmap.CreateCompatibleBitmap(&dc, rect.Width(),rect.Height());
memdc.SelectObject(&memBitmap);
。。。。。。。。。。。。
picture控件没起作用,整个图全画在对话框上了
...全文
137 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
SKzhinengjiagong 2011-10-11
  • 打赏
  • 举报
回复
高手 我把绘图程序全贴上来了
void CSampleDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rect;
CWnd *p = (CWnd*)GetDlgItem(IDC_PAINT);
CDC *pDC = p->GetDC();
GetClientRect(&rect);
CDC memdc;
CBitmap memBitmap;
memdc.CreateCompatibleDC(pDC);
memBitmap.CreateCompatibleBitmap(pDC, rect.Width(),rect.Height());
memdc.SelectObject(&memBitmap);

memdc.SetMapMode(MM_ANISOTROPIC);
memdc.SetWindowOrg(0,0);

memdc.SetWindowExt(rect.Width(), -rect.Height());
memdc.SetViewportOrg(rect.left, rect.bottom);
memdc.SetViewportExt(rect.Width(), rect.Height());

// background fill
memdc.FillSolidRect(&rect,RGB(0,0,0));
memdc.Draw3dRect(&rect,RGB(255,255,255),RGB(0,0,0));



DrawGrid2(&memdc);



// DrawDataX(&memdc);
// DrawDataY(&memdc);
// DrawDataZ(&memdc);
//************************************//

memdc.SetMapMode(pDC->GetMapMode());
memdc.SetViewportOrg(pDC->GetViewportOrg());
memdc.SetViewportExt(pDC->GetViewportExt());
memdc.SetWindowOrg(pDC->GetWindowOrg());
memdc.SetWindowExt(pDC->GetWindowExt());

pDC->BitBlt(0,0,rect.Width(),rect.Height(),&memdc,0,0,SRCCOPY);

memBitmap.DeleteObject();
memdc.DeleteDC();

}
SKzhinengjiagong 2011-10-11
  • 打赏
  • 举报
回复
我顶上去
carter10004 2011-10-11
  • 打赏
  • 举报
回复
是没试过
screentoclient()
这个函数?
Eleven 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 skzhinengjiagong 的回复:]

我改成pDC还是不管用CPaintDC dc(this); // device context for painting
CRect rect;

CWnd *p = (CWnd*)GetDlgItem(IDC_PAINT);
CDC *pDC = p->GetDC();

GetClientRect(&rect);
CDC memdc;
CBi……
[/Quote]
你最后pDC->BitBlt/StretchBlt呢?把你的代码写完整
向立天 2011-10-10
  • 打赏
  • 举报
回复
用自定义控件绘图
你可以参考这篇文章
http://blog.csdn.net/xianglitian/article/details/6100767
SKzhinengjiagong 2011-10-10
  • 打赏
  • 举报
回复
我改成pDC还是不管用CPaintDC dc(this); // device context for painting
CRect rect;

CWnd *p = (CWnd*)GetDlgItem(IDC_PAINT);
CDC *pDC = p->GetDC();

GetClientRect(&rect);
CDC memdc;
CBitmap memBitmap;
memdc.CreateCompatibleDC(pDC);
memBitmap.CreateCompatibleBitmap(pDC, rect.Width(),rect.Height());
memdc.SelectObject(&memBitmap);

memdc.SetMapMode(MM_ANISOTROPIC);
memdc.SetWindowOrg(0,0);

memdc.SetWindowExt(rect.Width(), -rect.Height());
memdc.SetViewportOrg(rect.left, rect.bottom);
memdc.SetViewportExt(rect.Width(), rect.Height());

// background fill
memdc.FillSolidRect(&rect,RGB(0,0,0));
memdc.Draw3dRect(&rect,RGB(255,255,255),RGB(0,0,0));
schlafenhamster 2011-10-10
  • 打赏
  • 举报
回复
memdc.CreateCompatibleDC(pDC);
memBitmap.CreateCompatibleBitmap(pDC, rect.Width(),rect.Height());
呔妖怪来嘛 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 visualeleven 的回复:]
memdc.CreateCompatibleDC(&pDC);
memBitmap.CreateCompatibleBitmap(&pDC, rect.Width(),rect.Height());
----------------
你这里的dc应该用picture控件窗口的pDC吧
[/Quote]
部长都说了。。你试试先
SKzhinengjiagong 2011-10-10
  • 打赏
  • 举报
回复
高手 能说的明白些吗 我是想画在控件上面
Eleven 2011-10-10
  • 打赏
  • 举报
回复
memdc.CreateCompatibleDC(&dc);
memBitmap.CreateCompatibleBitmap(&dc, rect.Width(),rect.Height());
----------------
你这里的dc应该用picture控件窗口的pDC吧
呔妖怪来嘛 2011-10-10
  • 打赏
  • 举报
回复
CPaintDC dc(this); // device context for painting
你这是对话框的dc 当然画在对话框上喽
Eleven 2011-10-10
  • 打赏
  • 举报
回复
你是想把图画在picture上吗?

15,980

社区成员

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

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