Search code examples
delphiteechart

Howto draw on every pixel, the min and max values of huge TeeChart FastLine series while DrawAllPoints:= false?


With Delphi 10.3, VCL and build-in standard TeeChart. Windows 10 x64.

I've a huge data samples, few millions, to view. My target is to show the minimum and maximum values related to each pixel. i.e the minimum and maximum values in a data segment which are drawn due to a screen decimation in one pixel.

Due to processing time response, I tried DrawAllPoints := false.It is x30 faster! I think in this case, TeeChart is drawing the value of the first sample from the relevant segment. Thus the min/max values are not drawn. With DrawAllPoints := true, everything is fine.

I'm also allowing the user to Zoom/Unzoom.

enter image description here

I could define my own short TeeChart series, limited to the number of pixels myself. However, it is not so trivial due to the user's Zoom option.

Is there any feature in TeeChart for that? i.e DrawAllPoints := false while drawing min and max of a segment on each pixel. Maybe there is a call back routine or heritage routine I could force this behavior?

Thanks.


Solution

  • Set DrawAllPointsStyle property of series into daMinMax.

    Seems some difference does exist.

     for var i := 1 to 100000 do begin
        Series1.Add(Sin(i/10000) + Random); // left one, daMinMax is set
        FastLineSeries1.Add(Sin(i/10000) + Random);
      end;
    

    enter image description here