newPen.CreatePen(PS_SOLID,1,RGB(0,0,0));
oldPen=pDC->SelectObject(&newPen);
pDC->MoveTo(XAxis_BasicPt,YAxis_BasicPt);
for (i=0;i<=DrawCount;i++)
{
     pDC->LineTo(XAxis_BasicPt+Num,(int)(YAxis_BasicPt-Sgvalue.LeftMoudTemp_Value[i]*2));
     Num+=5;
}
pDC->SelectObject(oldPen);

按理说,这么画应该没什么问题,但是却出现了一个问题。
问题是:在画完最后一个数据点时,还会画一条线,是直接连到X轴的,而且这条直线是折线形的,郁闷死了(有时候是正常的)
大家看看是什么问题导致的,画图函数就这个,其它都无关紧要的,
数据是时钟里模拟给的,1S刷新一次

解决方案 »

  1.   

    是不是应该将 for (i=0;i <=DrawCount;i++) 
    改为:  for (i=0;i <DrawCount;i++) 
    多画了一个?
      

  2.   


    对头,边界问题没处理好!你这样实际画了DrawCount+1个点。
      

  3.   

    恩 你们说的很对 非常感谢 我写的头都大了 都昏头了 ····还有个问题,就是:我用文本框显示数据,怎么刷新的比文本框慢好几个节拍呢?
    我每次在时钟里都是 Invalidate(FALSE);
            UpdateWindow();
    马上进行刷新的,但是曲线还是慢了几个节拍,
      

  4.   

    绘制完一次后建议onpaint()一次试试
      

  5.   

    OnPaint:
    CDC  MemDC;                                             //..创建一个设备环境对象
    MemDC.CreateCompatibleDC (&dc);
    CBitmap  MemBitmap;
    MemBitmap.CreateCompatibleBitmap(&dc,nWidth,nHeight);   //..创建一个位图对象     
    CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);     
            ···········(其它功能)
             this->Draw_Curve(·····)
             dc.BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
    OnTimer:
            ·······(数据处理)
              Invalidate(FALSE);
    UpdateWindow();
    上面就是主要的代码了,一些数据的处理就不贴出来了