能不能在单文档中,画出一个圆,而在ondraw()调用后画出一个别的图形后,这个圆还在?

zhaigch 2010-04-23 10:58:06
能不能在单文档中,画出一个圆,而在ondraw()调用后画出一个别的图形后,这个圆还在??
如果能的话,怎么实现呢?请教各位好心人了!谢谢
...全文
132 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
arong1234 2010-04-24
  • 打赏
  • 举报
回复
只有在OnDraw中的才会保留,鼠标事件中怎么可能?[Quote=引用 8 楼 wade_2003 的回复:]
放在OnDraw()函数中,或者鼠标事件中吧,用下面的画刷吧
[/Quote]
wade_2003 2010-04-24
  • 打赏
  • 举报
回复

CClientDC dc(this);
CPen pen(m_nLineStyle,m_nLineWidth,m_color);
dc.SelectObject(&pen);
CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
dc.SelectObject(pBrush);
wade_2003 2010-04-24
  • 打赏
  • 举报
回复
放在OnDraw()函数中,或者鼠标事件中吧,用下面的画刷吧
finder_zhang 2010-04-24
  • 打赏
  • 举报
回复
楼主,可以的,但有前提.
你这样问,应该是,你发现不可以.

你的情况应该是,发现执行完OnDraw里画的图后,原来画的就不见了.

正常情况下,窗口重画时,会调用OnDraw.但也会调用OnEraseBkgnd去清背景.
OnDraw其实并不会擦你原来画的东西,是其他的动作在擦.

我测试了一下,OnEraseBkgnd()时什么也不做,调用OnDraw是不会擦之前画的东西的.

但正常的程序,应该如楼上的建议,想一直存在的画图动作都要放在OnDraw()里.
在OnEraseBkgnd()里动作其实并不是正规做法,这个函数有其他的用途.如贴背景那些.
littlefangMFC 2010-04-24
  • 打赏
  • 举报
回复
直接把圆和别的图形一起画不就行了,你要实现什么样的功能啊,建议看看DC的东西
uc_fly 2010-04-24
  • 打赏
  • 举报
回复
画圆操作也放在OnDraw里。
Eleven 2010-04-23
  • 打赏
  • 举报
回复
绘图的操作最好都放在OnDraw函数里去做
zhaigch 2010-04-23
  • 打赏
  • 举报
回复
听别人说用,空类型的画笔可以实现。那到底怎么弄呢?请教了
HelloDan 2010-04-23
  • 打赏
  • 举报
回复
自己试一下就知道了。

那要看你别的图形怎样画了。
cdsnpeter 2010-04-23
  • 打赏
  • 举报
回复
当然可以。。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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