【问题标题】:Dashed series in TChartTChart 中的虚线系列
【发布时间】: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 图表系列一起使用(因此您可以使用复选框来隐藏/显示每个系列)。

标签: delphi teechart


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 2015-01-14
    相关资源
    最近更新 更多