BloodOxygen_Current := ADOT_SelectReviewData['breath'];
    Img_BloodOxygen.Canvas.MoveTo(x, 88-(BloodOxygen_Current));
    Img_BloodOxygen.Canvas.LineTo(x, 88);
x:=x+1;
Img_BloodOxygen.Canvas.MoveTo(x, 88-(BloodOxygen_Current));
    Img_BloodOxygen.Canvas.LineTo(x, 88);
x:=x+1;
Img_BloodOxygen.Canvas.MoveTo(x, 88-(BloodOxygen_Current));
    Img_BloodOxygen.Canvas.LineTo(x, 88);
x:=x+1;
ADOT_SelectReviewData.Next;
我用上面的方法画出的曲线有严重的锯齿,想求一函数我只要传入Y轴坐标值就能画出一平滑的曲线,谢谢!

解决方案 »

  1.   

    BloodOxygen_Current := ADOT_SelectReviewData['breath'];
        Img_BloodOxygen.Canvas.MoveTo(x, 88-(BloodOxygen_Current));
        Img_BloodOxygen.Canvas.LineTo(x, 88);
    x:=x+1;
    Img_BloodOxygen.Canvas.MoveTo(x, 88-(BloodOxygen_Current));
        Img_BloodOxygen.Canvas.LineTo(x, 88);
    x:=x+1;
    Img_BloodOxygen.Canvas.MoveTo(x, 88-(BloodOxygen_Current));
        Img_BloodOxygen.Canvas.LineTo(x, 88);
    x:=x+1;
    ADOT_SelectReviewData.Next;
    为什么重复画3次,难道是3条曲线?
    如果是只画一条,应该是:
    x := 0;//合适的数值
    Img_BloodOxygen.Canvas.MoveTo(x, 88);
    BloodOxygen_Current := ADOT_SelectReviewData['breath'];
        Img_BloodOxygen.Canvas.LineTo(x, 88-(BloodOxygen_Current));
    x:=x+1;
    ADOT_SelectReviewData.Next;
      

  2.   

    你还是使用GDI+吧:GPGraphics.SetSmoothingMode(SmoothingModeAntiAlias);
    自己用GDI写,我感觉有点难度,原理你可以通过MSDN搜索"锯齿效果"找到.