我有一份使用我正在维护的 TChart 的报告。自动添加的 TLineSeries 之一被分配颜色 clWhite,它太靠近背景 (clBtnFace)。
如果我更改它,那么添加的下一个系列将采用 clWhite。在创建所有其他系列之后,没有返回并更改它,有没有办法告诉 TChart 我不希望我的任何系列成为 clWhite?
当一个系列被添加到 TChart 时,TChart 会为其分配一种颜色。我希望它不分配 clWhite。
好的,不要轻易放弃,我做了更多的搜索。在 TeeProcs 单元中有一个 TColorArray 类型的名为ColorPalette的单元变量 。如果我找到并用另一种颜色替换白色来修复它。可能有它的实例副本。我会继续寻找,因为那将是首选。
要恢复ColorPalette ,只需在同一单元中调用单元方法SetDefaultColorPalette 。
SetDefaultColorPalette; // Make sure we start with the default
ColorPalette[4] := $007FFF; // Change White to Orange
try
// add series to the chart
finally
SetDefaultColorPalette; // Set it back to Default
end;
顺便说一句,我不能接受作为答案,因为我也问了这个问题,但我测试了它并且它有效。
从 TeeCharts 模块中我可以看出;不,您不能指定发货时不应该采用的颜色。
您可以以编程方式遍历所有 TLineSeries 条目,确保它们在运行时不使用 clWhite。假设您有一个可接受的颜色数组 clArray,您可以使用以下代码在运行时设置每个 tLineSeries 条目的颜色。
procedure TForm1.setColors(aChart: TChart; aColorArray: array of TColor);
var
chi : Integer;
coi : Integer;
begin
coi := low(aColorArray);
for chi := 0 to aChart.SeriesList.Count - 1 do begin
aChart.SeriesList[chi].Color := aColorArray[coi];
inc(coi);
if coi > high(aColorArray) then
coi := low(aColorArray);
end;
end;
procedure TForm1.FormShow(Sender: TObject);
var
ca : array of TColor;
begin
setLength(ca, 3);
ca[0] := clRed;
ca[1] := clBlue;
ca[2] := clGreen;
setColors(Chart1, ca);
end;
您可以使用系列方法 ClearPalette 然后 AddPalette 来创建您的自定义调色板。