我在在编写一个图形软件时,在屏幕上画出了一条折线.
原来图形在窗口放大缩小时图形会消失,后来找到了方法解决了,但是在把程序移出屏幕再拉回来时图像还是消失了.
断点跟踪了下,在绘制部分的时候坐标都对.代码如下:ppoint[m_Number] = ppoint[0];
pDC->MoveTo(ppoint[0].x, ppoint[0].y);
for( int i = 0 ; i < m_Number ; i++ )
    pDC->LineTo(ppoint[i].x, ppoint[i].y);ppoint里面存放的就是顶点的各坐标,共m_Number个点.绘制就是出不来.还有如果我需要生成一个闭合的多边形的话.使用以下的绘制代码:for( int i = 0 ; i < m_Number ; i++ )
    pDC->LineTo(ppoint[i].x, ppoint[i].y);
pDC->LineTo(ppoint[0].x, ppoint[0].y);这样画不出来.
如果使用Polygon函数也出不来.
请各位指教.

解决方案 »

  1.   

    要响应WM_PAINT消息来绘制才行,否则界面一刷新就没有了。
      

  2.   

    或者如果是View类里面添加代码的话,直接在OnDraw函数里面实现就O了。
      

  3.   

    在需要重绘的地方调用invalidate
      

  4.   

    你把绘图的操作都放在OnPaint函数中
      

  5.   


    移出屏幕,再移回来,此时窗口的部分或全部需要重绘,重绘的用意就在于图形的再现。所以你响应WM_PAINT消息。如果有视图,则在视图类的OnDraw函数里完成你的绘制。
      

  6.   

    mfc中,每次对图形的大小拖动,都会使图形重画,所以每次响应,都要调用画图代码。。
      

  7.   

    路上回答都正解,刚开了个多文档模板,把楼主的程序代码放在ONDRAW中添加,不会在出现楼主的情况
      

  8.   

    谢谢各位啦. 
    我的函数是在View类的OnDraw里的,现在发现是由于坐标点计算的问题,重绘时图像跑出了但前屏幕的外面了