问题描述
我正在使用甘特系列在图表上显示区域。问题是系列绘制在图表网格的顶部。
我希望在网格顶部绘制普通线系列,并在其后面绘制甘特系列。如果没有 OnAfterDraw,是否可以使用标准的 TChart 功能?
解决方法
您可以在 TGanttSeries
处绘制 OnBeforeDrawAxes
,然后在 OnBeforeDrawSeries
处将其隐藏,最后在 OnAfterDraw
处再次使其可见以供下一个绘制周期:
type
TForm1 = class(TForm)
Chart1: TChart;
Series1: TGanttSeries;
Series2: TLineSeries;
procedure FormCreate(Sender: TObject);
procedure Chart1BeforeDrawAxes(Sender: TObject);
procedure Chart1BeforeDrawSeries(Sender: TObject);
procedure Chart1AfterDraw(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type TCustomSeriesAccess=class(TCustomSeries);
procedure TForm1.Chart1BeforeDrawAxes(Sender: TObject);
begin
TCustomSeriesAccess(Series1).DrawAllValues;
end;
procedure TForm1.Chart1BeforeDrawSeries(Sender: TObject);
begin
Series1.Visible:=False;
end;
procedure TForm1.Chart1AfterDraw(Sender: TObject);
begin
Series1.Visible:=True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Chart1.Draw;
end;