Оптимизация рисования TCHart в Delphi 7 - PullRequest
1 голос
/ 24 января 2011

Мой предыдущий вопрос имел большой вклад, но у меня не получилось, потому что моя проблема, похоже, связана с Delphi 7.

У меня есть диаграмма с одной серией (TFastLineSeries) и 3600 точками данных, на рисование которых уходит до 45 секунд. Другие говорят, что это должно быть молниеносно, поэтому кто может помочь, учитывая, что я использую Delphi 7 и стандартный компонент TChart.

Я подозреваю, что вместо 3600 вызовов AddXY () мне нужно сначала подготовить данные, а затем добавить их все сразу.


Обновление: в D7 сигнатура функции AddXy () равна function AddXY(Const AXValue, AYValue: Double; Const AXLabel: String; AColor: TColor) : Longint; where timeLabel is a string representing MM:SS. But what value should I be passing for

и я могу вызвать его с помощью `Chart1.Series [0] .AddXY (Chart1.Series [0] .Count, codValue, timeLabel, clRed


Кстати, я кодировал Chart1.Series [0] .XValues.DateTime: = True; Chart1.BottomAxis.DateTimeFormat: = 'nn: ss'; // "hh" или "nn" или "ss", как вы хотите, например, Chart1.BottomAxis.DateTimeFormat: = "дд / мм / гггг чч: мм";

Ответы [ 3 ]

1 голос
/ 25 января 2011

Кстати: он также может ускорить рисование, чтобы установить Chart1.AutoRepaint в false до того, как вы добавите свои значения, а затем установите обратно в true

1 голос
/ 26 января 2011

В этом вам может помочь разработчик TeeChart .... Быстрое рисование линий с TeeChart

1 голос
/ 25 января 2011

Может быть, узким местом является способ, которым вы генерируете значения для отображения в диаграмме?

В Delphi 2010 я измерил следующий код, чтобы он занимал менее 1/10 секунды:

var
  I: Integer;
begin
  for I := 0 to 3000 - 1 do
    Series1.AddXY(Random(1000), Random(100));
...