我在一个CView中定义了一个CPoint数组,要将数组中的point打印再view上,但是总数不得超过20个,即在画完20个点后,必须将view中的之前所有点清空。
我用的方法,是在onpaint()中绘画点,在另外一个函数中判断总数是否大于20,如果小于,继续画,如果大于,则采取另外一套做法,memset()清零试过,invalidate试过,但是还是在view中有之前的点。不过你用其他的界面挡一下,就把之前的点给屏蔽了。
请教各位,如何将之前的点在界面中赶走?

解决方案 »

  1.   

    onpaint()中绘画点,重画时就更新点的信息,然后调用UpdateView
      

  2.   

    用刷子刷非常不好,导致客户区图片太多,当你绘图次数过多时,就会CDC报错
      

  3.   

    这是因为你没有更新视图。你可以宣布指定区域/或者整个界面区域 需要更新。(然后就会调用你的OnPaint()对无效区域进行绘制。如果你重新绘制整个显示区域,就不会出现你所说的情况。当然了,更高效的是更新指定你知道无效的区域了。
      

  4.   

    把CPoint数组清空,重新刷一遍。
      

  5.   

    http://www.skinfeature.com/bbs 很多教程
      

  6.   

    在Onpaint()是系统调用的绘制过程!
    在其它函数中GetDC得到的DC绘制在系统需要重绘的时候根本不调用的
    所以 同意把CPoint数组清空,invalidate。