我在客户区用鼠标绘制了一条任意线,然后放大窗口,这条线就不见了,我该用什么方法可以保留着条曲线呢?请教大家:简单的例子如下:void CTTView::OnMouseMove(UINT nFlags, CPoint point) 
{

CClientDC* pDC=new CClientDC(this);
pDC->SetPixel(point.x,point.y,NULL); CView::OnMouseMove(nFlags, point);
}用它在客户区绘制了一连串的点,(其实和划线一样),但是经过窗口的缩放以后,这些点就不见了
是不是应该有什么方法将他们自动保留到屏幕呢?感激不尽!

解决方案 »

  1.   

    用一个数组POINT pt[]保留所有点的位置,在OnDraw()中重画
      

  2.   

    在VB中可以把窗体的AutoRedraw属性设置为True就可以了,VC中应该要在OnDraw或 OnPaint中重画。
      

  3.   

    方法有问题,
    把mousemove当中得到的鼠标点记录下来,并且转换成为客户区域的坐标
    然后在在onpaint当中进行绘制
      

  4.   

    好像是用CMetaFileDC吧,但是我不会用,
      

  5.   

    在OnMouseMove当中绘制的内容在窗口重新绘制的时候是不会自动绘制的除了保留数据,在每次onpaint或者ondraw函数当中使用这些数据重新绘制以外你还可以把绘制都集中到一个memdc上面,然后在onpaint或者ondraw,或者mousemove等涉及到改变画面内容的部分的时候,从memdc当中bitblt到窗口上就是了。
      

  6.   

    需要将你点保存,然后在视图类的OnPaint()或OnDraw()函数中,将着写点重绘即可。
    你找一些关于绘图的书籍,看看你就会明白了。
      

  7.   

    Redraw the client window or save the line information when zoom out.