TChart 中的虚线系列

Dashed series in TChart

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.

这里的问题是行中的破折号没有被解释为一个系列:它们不能同时 hidden/shown 并且在图例中表示为多个项目。

如何制作真正的中断系列?

如果不可以,那么如何在图例中加入单行的片段? (将来我想 show/hide 通过单击图例中相应的复选框来显示每一行)。

每条水平线的甘特图系列应该让您接近。关闭系列的每个颜色,以便所有段都是相同的颜色。