因为Delphi自带的那个TChart我找不到多个Y轴的方法,所以现在想自己写一个图表(曲线就可以了),请求思路或者源码!谢谢大家了!很急啊!谢谢

解决方案 »

  1.   

    在image上画线,自己控制步长和坐标,我们的一个程序就是自己画的曲线。效果不错
      

  2.   

    刚好前些日子有写一个趋势图,主要就是moveto,linetotype
      TTinData=record
        dotTime: TDateTime;
        liquip : double;
        volume : double;
        weight : double;
      end;
      TTinDatas=record
        nDot     : integer;
        tinNo    : string;
        fromTime : TDateTime;
        endTime  : TDateTime;
        maxPlace : double;
        maxVolume: double;
        maxWeight: double;
        datas    : array of TTinData;
      end;var
      m_TinDatas: TTinDatas;....
    procedure TFmTrendLine.GetTrendLineXY(value: double; dotTime: TDateTime; var x,y: integer; scale: integer=1);
    begin
      x := TREND_SRCX+Round(MinutesBetween(dotTime,FmTinHistory.TinDatas.fromTime)*TREND_WIDTH/m_Minutes);
      y := TREND_SRCY-Round(value*TREND_HEIGHT*scale/m_MaxY);
    end;procedure TFmTrendLine.DrawWeightTrendLine();
    var
      i,x,y: integer;
    begin
      GetTrendLineXY(m_TinDatas.datas[0].weight,m_TinDatas.datas[0].dotTime,x,y);
      //以下是绘图
      imgTrendLine.Canvas.MoveTo(x,y);
      imgTrendLine.Canvas.Pen.Color := clBlue;
      imgTrendLine.Canvas.Pen.Width := 2;
      for i:=1 to m_TinDatas.nDot-1 do
      begin
        //根据重量和时间点,计算x,y坐标
        GetTrendLineXY(m_TinDatas.datas[i].weight,m_TinDatas.datas[i].dotTime,x,y);
        imgTrendLine.Canvas.LineTo(x,y);
      end;
    end;