【发布时间】:2023-03-16 07:43:01
【问题描述】:
在 TeeChart 中是否可以使用真正的虚线系列?
我试图在 TChart 上表示几个数据通道以显示数据中断。根据计划,每个系列应包含多个范围。每个范围代表图表上的一个破折号,仅由起点和终点两点构建,以加快图表绘制速度。
我没有找到中断的线系列,所以我用多个 FastLineSeries 在线构建了我的示例,手动设置它们的颜色:
unit BCLMain;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, VclTee.TeeGDIPlus, VCLTee.TeEngine,
Vcl.ExtCtrls, VCLTee.TeeProcs, VCLTee.Chart, VCLTee.Series;
type
TForm1 = class(TForm)
Chart1: TChart;
procedure FormShow(Sender: TObject);
private
procedure _fillSeries(serIndex: Integer);
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
var
i: Integer;
begin
Chart1.ClearChart();
Chart1.View3D := False;
for i := 0 to 4 do _fillSeries(i);
end;
procedure TForm1._fillSeries(serIndex: Integer);
const
serc: array[0..4] of TColor = (clRed, clGreen, clBlue, clYellow, clFuchsia);
var
i, r: Integer;
ser: TFastLineSeries;
begin
for i := 0 to 4 do begin
ser := TFastLineSeries.Create(Chart1);
ser.Color := serc[serIndex];
ser.Pen.Width := 5;
Chart1.AddSeries(ser);
r := Random(20);
ser.AddXY(i*10+r, serIndex);
ser.AddXY((i+1)*10-1+r, serIndex);
end;
end;
end.
这里的问题是行中的破折号不能解释为单个系列:它们不能一次隐藏/显示,而是在图例中表示为多个项目。
如何制作真正的中断系列?
如果不可能,那么如何在图例中加入单行的碎片? (将来我想通过单击图例中的相应复选框来显示/隐藏每一行)。
【问题讨论】:
-
看看用于绘制开始/停止数据的 Gnatt 图表类型。
-
与每个水平行的 Gnatt 图表系列一起使用(因此您可以使用复选框来隐藏/显示每个系列)。