2

我有一份使用我正在维护的 TChart 的报告。自动添加的 TLineSeries 之一被分配颜色 clWhite,它太靠近背景 (clBtnFace)。

如果我更改它,那么添加的下一个系列将采用 clWhite。在创建所有其他系列之后,没有返回并更改它,有没有办法告诉 TChart 我不希望我的任何系列成为 clWhite?

当一个系列被添加到 TChart 时,TChart 会为其分配一种颜色。我希望它不分配 clWhite。

4

3 回答 3

6

好的,不要轻易放弃,我做了更多的搜索。在 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;

顺便说一句,我不能接受作为答案,因为我也问了这个问题,但我测试了它并且它有效。

于 2008-10-15T00:49:11.017 回答
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;
于 2008-10-14T23:41:08.190 回答
0

您可以使用系列方法 ClearPalette 然后 AddPalette 来创建您的自定义调色板。

于 2008-10-15T01:10:13.613 回答