现在我已经给chart加了x,y的坐标,我怎么才可以在某个x坐标上面画一根竖线或y坐标上面画根横线呢?  procedure TForm1.Chart1AfterDraw(Sender: TObject);
const
  Danger: Double = 10.5;//警戒水位
  DColor: TColor = clRed;//平行线的颜色
  DInfo: String = '警戒线';//注释信息
var
  X1, X2, Y: Longint;
  R: TRect;
begin
  with Series1 do begin//Series1为一TLineSeries
    X1 := CalcYPosValue(0);
    X2 := CalcYPosValue(MaxYValue);
    Y := CalcXPosValue(Danger);
  end;
  with Chart1.Canvas do begin
    Pen.Color := clred;
    MoveTo(x1, Y);
    LineTo(x2, Y);
    Pen.Color := clInfoText;
    Brush.Color := clInfoBk;{
    R := Rect((X1 + X2) div 2, Y - TextHeight(DInfo), (X1 + X2) div 2
      + TextWidth(DInfo) + 4, Y + 4);
    FillRect(R);
    TextOut(R.Left + 2, R.Top + 2, DInfo);}
  end;
end;现在就是想把'Danger: Double = 10.5;//警戒水位'这里变成某个X轴的坐标  

解决方案 »

  1.   

    procedure TForm1.Series1AfterDrawValues(Sender: TObject);
    var
      MidPos: Integer;
    begin
      MidPos := Chart1.LeftAxis.CalcYPosValue(MidValue);
      with Chart1 do
        begin
          Canvas.Pen.Color := clRed;
          Canvas.Pen.Style := CrossHairStyle;
          Canvas.Pen.Width := 1;
          Canvas.MoveTo(ChartRect.Left, MidPos);
          Canvas.LineTo(ChartRect.Right, MidPos);
        end;
    end;
      

  2.   

    procedure TForm1.Series1AfterDrawValues(Sender: TObject);
    var
      MidPos: Integer;
    begin
      MidPos := Chart1.LeftAxis.CalcYPosValue(MidValue);
      with Chart1 do
        begin
          Canvas.Pen.Color := clRed;
          Canvas.Pen.Style := CrossHairStyle;
          Canvas.Pen.Width := 1;
          Canvas.MoveTo(ChartRect.Left, MidPos);
          Canvas.LineTo(ChartRect.Right, MidPos);
        end;
    end;
      

  3.   

    procedure TForm1.Series1AfterDrawValues(Sender: TObject);
    var
      MidPos: Integer;
    begin
      MidPos := Chart1.LeftAxis.CalcYPosValue(MidValue);
      with Chart1 do
        begin
          Canvas.Pen.Color := clRed;
          Canvas.Pen.Style := CrossHairStyle;
          Canvas.Pen.Width := 1;
          Canvas.MoveTo(ChartRect.Left, MidPos);
          Canvas.LineTo(ChartRect.Right, MidPos);
        end;
    end;
      

  4.   

    procedure TForm1.Button3Click(Sender: TObject);
    var
      MidPos: Integer;
    begin
      MidPos := Chart1.LeftAxis.CalcxPosValue(1);
      with Chart1 do
        begin
          Canvas.Pen.Color := clRed;
          Canvas.Pen.Style := psDash ;
          Canvas.Pen.Width := 1;
          Canvas.MoveTo(MidPos,0);
          Canvas.LineTo(MidPos,ChartRect.Bottom);
        end;
    end;我试着画出了竖线,但是我想在X轴的第二个坐标,第二个坐标位置都画上竖线,它的位置怎么定呢?