ここであなたに答えました。DrawMinorTick
カスタム ラベルを使用して不規則なラベルを描画し、不規則なカスタム マイナー ティックを手動で描画する関数を作成する、最後のより複雑な例のコードをここに投稿します。
uses Series, TeCanvas;
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
Chart1.View3D:=false;
Chart1.Legend.Visible:=false;
Chart1.AddSeries(TFastLineSeries).FillSampleValues(10);
for i:=0 to Chart1[0].Count-1 do
Chart1[0].XValue[i]:=i+1;
Chart1.Axes.Bottom.Items.Clear;
for i:=1 to 4 do
Chart1.Axes.Bottom.Items.Add(i, IntToStr(i));
Chart1.Axes.Bottom.Items.Add(7, '7');
Chart1.Axes.Bottom.Items.Add(10, '10');
Chart1.Axes.Bottom.MinorTickCount:=0;
end;
procedure TForm1.Chart1AfterDraw(Sender: TObject);
begin
DrawMinorTick(Chart1.Axes.Bottom, 1.5);
DrawMinorTick(Chart1.Axes.Bottom, 2.5);
DrawMinorTick(Chart1.Axes.Bottom, 5);
DrawMinorTick(Chart1.Axes.Bottom, 6);
DrawMinorTick(Chart1.Axes.Bottom, 8);
DrawMinorTick(Chart1.Axes.Bottom, 9);
end;
procedure TForm1.DrawMinorTick(axis: TChartAxis; value: double);
var XPos, YPos: Integer;
begin
Chart1.Canvas.Pen.Color:=axis.MinorTicks.Color;
Chart1.Canvas.Pen.Width:=axis.MinorTicks.Width;
Chart1.Canvas.Pen.Style:=axis.MinorTicks.Style;
if axis.Horizontal then
begin
XPos:=axis.CalcPosValue(value);
YPos:=axis.PosAxis+1;
Chart1.Canvas.Line(XPos, YPos, XPos, YPos+axis.MinorTickLength);
end
else
begin
XPos:=axis.PosAxis;
YPos:=axis.CalcPosValue(value);
Chart1.Canvas.Line(XPos, YPos, XPos-axis.MinorTickLength, YPos);
end;
end;