初学者求教.如何保持LineTo()出来的线条不被擦除?????

chengyumao 2004-10-04 05:08:25
代码如下.
void CGraphDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if (nFlags&MK_LBUTTON)
{
vMyDC->LineTo(vOldPoint);
vMyDC->MoveTo(point);
}
CDialog::OnMouseMove(nFlags, point);
}
是一个用鼠标画线的程序,但只要一有刷新窗口的动作,图案就没了......>_<~~我用了SaveDC但没什么做用(只是移动时图像不被擦除,查资料后得知这个函数只保存DC相关参数,不保存图像),查了一下,难道要把它存成文件,然后再复原?????不用这么大动干戈吧......请高人指教啊.....一定给分....
...全文
123 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pingpz 2004-10-07
  • 打赏
  • 举报
回复
我认为主要要搞清楚
vMyDC->LineTo(vOldPoint);
vMyDC->MoveTo(point);
画出来的图形保放在哪里!在vMyDC里吗?还是在View里?
小弟很想知道!
chengyumao 2004-10-06
  • 打赏
  • 举报
回复
.....谢谢楼上的方法,解决了,回头查查这个CMetaFileDC 类。。。。。。。怎么从没听说过。。。。。呵
lezhanhong 2004-10-05
  • 打赏
  • 举报
回复
不好意思啊?还没有写完就发了。重来。
用CMetaFileDC类试一下。具体如下:
1.在你的CGraphDlg类中加一个private的变量 CMetaFileDC* m_pMF;
2.在OnInitDialog中初始化。
m_pMF=new CMetaFileDC;
m_pMF->Create();
3.把你的OnMouseMove改为
void CGraphDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if (nFlags&MK_LBUTTON)
{
vMyDC->LineTo(vOldPoint);
m_pMF->LineTo(vOldPoint);
vMyDC->MoveTo(point);
m_pMF->MoveTo(point);
}
CDialog::OnMouseMove(nFlags, point);
}
4.在OnPaint()中将下面一段改成这样
else
{
CPaintDC dc(this);
HMETAFILE hmf=m_pMF->Close();
dc.PlayMetaFile(hmf);
CMetaFileDC* temp=new CMetaFileDC;
temp->Create();
temp->PlayMetaFile(hmf);
DeleteMetaFile(hmf);
delete m_pMF;
m_pMF=temp;
CDialog::OnPaint();
}
5.重载WM_DESTROY消息将m_pMF释放。
m_pMF->Close();
delete m_pMF;
lezhanhong 2004-10-05
  • 打赏
  • 举报
回复
用CMetaFileDC类试一下。具体如下:
1.在你的CGraphDlg类中加一个private的变量 CMetaFileDC* m_pMF;
2.在OnInitDialog中初始化。
m_pMF=new CMetaFileDC;
m_pMF->Create();

tengfei2005 2004-10-05
  • 打赏
  • 举报
回复
在OnDraw里用LineTo就可以拉
chengyumao 2004-10-05
  • 打赏
  • 举报
回复
顶一顶啊........还有灭人帮一帮啊.........
chengyumao 2004-10-04
  • 打赏
  • 举报
回复
.......如果真的只能保存的话,CDC类有没有什么只存画过路径的方法??实在没有的话,我只好自己记录鼠标动作了.........~~~~T_T~~~
kugou123 2004-10-04
  • 打赏
  • 举报
回复
应该还是要保存图形的。不然刷新,什么都没了。
chengyumao 2004-10-04
  • 打赏
  • 举报
回复
哦这个.........主要是因为用鼠标画的图不是确定的,如果要一次性重画出来的话不是要记录鼠标的移动了??
cadinfo 2004-10-04
  • 打赏
  • 举报
回复
可以尝试其它的方法,尽量将绘图代码放在OnDraw中
例如你在鼠标移动时候只是改变变量状态,刷新时候在OnDraw中绘制图形

19,468

社区成员

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

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