所以我有一个很好的传统Delphi 5项目,在日期时间bottomaxis上有一个垂直条形图。它工作得非常好。 现在我想添加最多三个水平“警告”线,每条线最多有三个可切换标签。这个想法是显示三条红色限制线(三个3元素的lineseries),以及最左边,中间和最右边的标签显示Yvalue限制。标签可以切换,以免混乱数据。它也有效。即使在滚动时,这些标签也必须位于xmin,mid和xmax。我在重新绘制第一个数据集时启动计时器,然后使用图表的新xmin,mid,xmax重置三个标签系列,解决了这个问题。滚动时,标签会跟随。 但是当我放大时,会丢失一些东西。我在状态栏中打印xmin,xmax和行坐标,因为它被重新计算(用于调试),它看起来很正确,但是三条水平线向左滑动。最左边的点不在视线范围内,最左边的点向左漂移,随着变焦的增加而变得更糟。 Yvalues是正确的。
是否有最好的方法来对plotdata进行plot-eventdriven重新计算? (或者我必须在XE10.2中重建所有内容吗?)
答案 0 :(得分:0)
我刚在家里跑过,XE10.2中也出现了同样的现象。当我放大时,第二个系列(水平线,重新计算到图形边缘的端点)向侧面爬行。 但是如果我将series2连接到Topaxis ,那么一切都很好。坚如磐石。看起来像是一件很自然的事情。傻我。
procedure TForm1.Series1AfterDrawValues(Sender: TObject);
var a,b :Double;
begin
a:=(Chart1.LeftAxis.Minimum+chart1.leftAxis.maximum)/2;
b:=chart1.TopAxis.Minimum;
series2.Clear;
series2.addxy(b,a,'Left');
series2.addxy(b+(chart1.topAxis.Maximum-b)/2,a,'Mid');
series2.addxy(chart1.topAxis.Maximum,a,'Right');
end;