gpt4 book ai didi

delphi - 在 teechart 上的每个新点上绘制一个标记

转载 作者:行者123 更新时间:2023-12-03 19:07:28 24 4
gpt4 key购买 nike

我正在 Embarcadero XE 上开发一个应用程序,我从以太网端口接收实时数据并显示在屏幕上的 teechart 图表上。

该应用程序像示波器一样工作,即图表显示有一个数据时间窗口(例如 10 秒),每个新的输入点都会覆盖屏幕上已有的数据。

我希望您能帮助编写一个仅在添加的最新点上放置标记的代码,以便用户可以跟踪屏幕上的哪些点是最近的点。我不想要所有的点都有一个标记,我只想要最新的。

正在使用的系列是快线。

这是我用来向图表添加数据的代码:

//Delete already existing point
if (Oscilografia.Series[0].Count>1) then
begin
Oscilografia.Series[0].Delete(cont);
end;
//Write point
Oscilografia.Series[0].addxy(cont,data, '', clblue);

最佳答案

你有几个选择。最简单的就是新建一个TPointSeries显示当前点。如果您不想在图例中显示此系列,则只需设置:

 Oscilografia.Series[n].ShowInLegend := false;

在哪里 n是您希望从图例中排除的系列的索引。

或者,您可以自定义绘制 OnAfterDraw 中的任何相关项目。处理程序。例如 :
procedure TForm1.Chart1AfterDraw(Sender: TObject);
var
xPos, yPos : integer;
begin
Chart1.Canvas.Pen.Color := clRed;
Chart1.Canvas.Pen.Style := psSolid;
Chart1.Canvas.Pen.Width := 1;
Chart1.Canvas.Pen.Mode := pmCopy;

xPos := Chart1.BottomAxis.CalcPosValue(CurrentXValue);
yPos := Chart1.LeftAxis.CalcPosValue(CurrentYValue);

// Parameters are
// X-Coord, Y-Coord, X-Radius, Y-Radius, Start Angle, End Angle, Hole%
Chart1.Canvas.Donut(xPos, yPos, 3, 3, 0, 360, 0);
end;

这会产生,例如:

enter image description here

自定义绘图还允许您执行其他操作,例如添加标记等。例如:
procedure TForm1.Chart1AfterDraw(Sender: TObject);
var
xPos, yPos : integer;
yMax, yMin : integer;
begin
Chart1.Canvas.Pen.Color := clRed;
Chart1.Canvas.Pen.Style := psSolid;
Chart1.Canvas.Pen.Width := 1;
Chart1.Canvas.Pen.Mode := pmCopy;

xPos := Chart1.BottomAxis.CalcPosValue(CurrentXValue);
yPos := Chart1.LeftAxis.CalcPosValue(CurrentYValue);

Chart1.Canvas.Donut(xPos, yPos, 3, 3, 0, 360, 0);

Chart1.Canvas.Pen.Color := clGreen;
Chart1.Canvas.Pen.Style := psDash;

yMax := Chart1.LeftAxis.CalcPosValue(Chart1.LeftAxis.Maximum);
yMin := Chart1.LeftAxis.CalcPosValue(Chart1.LeftAxis.Minimum);
Chart1.Canvas.DoVertLine(xPos, yMax, yMin);
end;

这给出了跟随当前点的垂直虚线:

enter image description here

请注意 CalcPosValue函数由图表轴公开,并允许您将轴空间中的点转换为图表 Canvas 空间中的整数(屏幕)坐标。

关于delphi - 在 teechart 上的每个新点上绘制一个标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29797805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com