关于MFC GDI绘图坐标系的问题

asiver 2010-01-15 08:57:08
这里有两个函数,初始化Initialize()和绘图OnPaint()

void CStaticAScan::Initialize()
{
m_pDC = this->GetDC();
this->GetClientRect(&m_rect);
m_pOldBmp = NULL;
//创建内存绘图设备
m_pDC->SetMapMode(MM_ANISOTROPIC);
m_pDC->SetWindowExt(CSize(1000,1000));
m_pDC->SetViewportExt(m_rect.right,-m_rect.bottom);
m_pDC->SetViewportOrg(m_rect.right/2,m_rect.bottom/2);

m_memDC.CreateCompatibleDC(m_pDC);
m_memBitmap.CreateCompatibleBitmap(m_pDC, m_rect.right, m_rect.bottom);
m_pOldBmp = m_memDC.SelectObject(&m_memBitmap);
m_memDC.BitBlt(m_rect.left,
m_rect.top,
m_rect.right,
m_rect.bottom,
m_pDC,
0, 0, SRCCOPY
);

void CStaticAScan::OnPaint()
{
m_memDC.FillSolidRect(-500, 500, 1000, 1000, RGB(0, 0, 0));//背景
m_memDC.Ellipse(-500,-500,500,500);
//把内存绘图拷贝到屏幕
m_pDC->BitBlt(m_rect.left,
m_rect.top,
m_rect.right,
m_rect.bottom,
&m_memDC,
0, 0, SRCCOPY
); //这里拷贝后得不到完整的图形,不知道为什么?
/*
CPaintDC dc(this); // device context for painting
dc.SetMapMode(MM_ANISOTROPIC);
dc.SetWindowExt(CSize(1000,1000));
dc.SetViewportExt(m_rect.right,-m_rect.bottom);
dc.SetViewportOrg(m_rect.right/2,m_rect.bottom/2);
dc.Ellipse(-500,-500,500,500); //这里可以得到完整的图形
*/
}

//哪位对绘图熟悉的高手解答一下,小弟先谢过了
...全文
145 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dirdirdir3 2010-01-15
  • 打赏
  • 举报
回复
你的mrect是多少?自己画图对一下坐标,应该是对错了
zhangrenhui 2010-01-15
  • 打赏
  • 举报
回复
ding

19,469

社区成员

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

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