Hey_Faye
2015-07-15 08:28
采纳率: 83.3%
浏览 4.6k
已采纳

MFC 基于对话框的画图问题 OnPaint()函数不解

我在对话框中插入了一个tab control,用来画两个曲线图,其中一个是直接在界面上画的,用Moveto和Lineto函数,但是为什么我在切换tab控件的时候,那个曲线之前画的图像都没有了,从我切换过去之后重新开始画了呢?麻烦大家啦~

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • Tiger_Zhao 2015-07-15 09:01
    已采纳

    Tab切换会重新刷新,绘图内容会清除。
    你要保留旧图就应该用绘图缓冲区,先在缓冲区中绘图,输出到界面。
    Tab切换时就不用从头绘图,直接把缓冲区输出到界面。

    点赞 1 评论
  • 缄默hong 2015-07-15 08:52

    切换函数可能触发了onpaint函数,把窗口重新刷新了,以前画的就给刷掉了,把绘图重新放在onpaint每次刷新就重画,这样以前的就会显示了。 view类的ondraw函数是这样,所以可能是这个原因。

    点赞 评论
  • oyljerry 2015-07-15 08:57

    切换tab的时候,OnPaint也跟着换了,之前的绘图就没有了吧。
    你所有的绘图都放到每个tab页面的OnPaint中

    点赞 评论
  • zuishikonghuan 2015-07-15 13:49

    因为你把图绘制到control的设备场景中,但是设备场景失效后在必要时会被系统刷新,系统通过DefWindowProc处理WM_PAINT重画control,也就是mfc里的OnPaint,所以你应该在这个里面画,同时不让系统再画了,这样control每次重画都会画上你的图,这样你的图就“一直存在了”

    点赞 评论

相关推荐 更多相似问题