TChart中的虚线系列

时间:2019-07-29 14:03:52

标签: delphi teechart

在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.

这里的问题是,该行中的破折号不能解释为单个序列:它们不能一次隐藏/显示,而是在图例中表示为多个项目。

enter image description here

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

如果不可能,那么如何在图例中合并单行的片段? (将来,我想通过单击图例中的相应复选框来显示/隐藏每行)。

1 个答案:

答案 0 :(得分:3)

每条水平线的Gnatt图表系列将使您接近。关闭系列的“每个颜色”,以便所有段均具有相同的颜色。

enter image description here