0

当绘制其中某些值的 ValueColor 设置为 clNone 的线条系列时,线条将显示为好像这些点不存在或不可见。

但是,当我对同一线系列使用 TCrossFunction 时,它的行为就好像这些点是可见的。

当它们之间的点的 ValueColor 不是 clNone 时,第一个图像显示了由橙色“X”符号指示的交叉点。

在此处输入图像描述

此图像显示交叉点仍位于同一位置,即使它们之间的点已将其 ValueColor 属性设置为 clNone。

在此处输入图像描述

顺便说一句,我确实在绘图之前调用了 CheckDataSource 来刷新交叉点。

如何让交叉点函数尊重 ValueColor 属性?

4

1 回答 1

2

就我的目的而言,看起来最简单和最快的解决方案是在将空点 (ValueColor = clNone) 应用于 CrossPoints 函数之前过滤掉它们。

像这样的东西对我有用:

function create_non_null_series (series: TChartSeries): TChartSeries;
var
    i: Integer;
begin
    Result := TChartSeries.Create(nil);
    for i := 0 to series.Count-1 do
    begin
        if (not series.IsNull(i)) then
            Result.AddXY(series.XValue[i], series.YValue[i]);
    end;
end;

TChart 中可能有一些内置的东西可以做到这一点,但我还没有找到。

于 2013-01-29T20:58:49.037 回答