我有一份使用我正在维护的TChart的报告。其中一个自动添加的TLineSeries被赋予颜色clWhite,它太靠近背景(clBtnFace)。
如果我改变它,那么下一个添加的系列就会变成clWhite。在创建了所有其他系列之后,没有返回并更改它,是否有一些方法告诉TChart我不希望我的任何系列都是clWhite?
当系列添加到TChart时,TChart会为其指定颜色。我希望它不要分配clWhite。
答案 0 :(得分:6)
确定没有人轻易放弃,我做了一些搜索。 TeeProcs 单元中有一个名为 ColorPalette 的单元变量 TColorArray 。如果我找到并用不同的颜色替换白色来修复它。可能有它的实例副本。我会继续寻找,因为那将是首选。
要恢复 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;
顺便说一句,我不能接受答案,因为我也问了这个问题,但我测试了它并且它有效。
答案 1 :(得分:2)
我可以从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;
答案 2 :(得分:0)
您可以使用系列方法ClearPalette然后使用AddPalette来创建自定义调色板。