获取下鼠标X和Y值(Get X and Y values under mouse pointer)

2019-10-17 20:37发布

我只使用与单个Y轴TLineSeries简单的图表。 由于图表上时,鼠标指针移动,我想获得与指针的位置独立于任何一系列相关的X和Y值。

我可以处理MouseMove事件,让屏幕X和Y坐标,但我发现,将它们转换的唯一方法是通过系列 - > XValues->查找和系列 - > YValue->找到方法。

有两个问题:

1 - >找到从系列 - > YValue-返回的值始终为-1不管是否指针在一系列线或没有。

2 - >找到从系列 - > XValue-返回的值是-1,除非指针位于包含一系列线图表的一部分。

为什么系列 - > YValue->找到总是返回-1?

更重要的是,我怎么能得到的值不管是否指针与一系列的线或没有图表的一部分吗?

我使用的TeeChart的版本附带的RAD Studio XE3。

Answer 1:

为什么系列 - > YValue->找到总是返回-1?

这是因为找到使用一系列值和系列返回其点指数。 的OnMouseMove提供了屏幕像素坐标,而不是一系列值。

更重要的是,我怎么能得到的值不管是否指针与一系列的线或没有图表的一部分吗?

您可以使用轴作为参考,而不是系列,例如:

procedure TForm2.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  XVal: double;
  YVal: double;
begin
  XVal:=Chart1.Axes.Bottom.CalcPosPoint(X);
  YVal:=Chart1.Axes.Left.CalcPosPoint(Y);

  Chart1.Title.Text[0]:=FormatFloat('#.##', XVal) + ' - ' + FormatFloat('#.##', YVal);
end;


文章来源: Get X and Y values under mouse pointer
标签: teechart