Einzelnen Beitrag anzeigen

ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
376 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Tchart Hintergrund abschnittsweise einfärben

  Alt 26. Nov 2008, 11:29
Hallo th_bone,

eine direkte funktion gibt es dafür nicht aber du kannst das selbst zeichnen. Hier ein Ausschnitt aus einem meiner Programme. Ich fülle hier mehrer Bereiche des Chart bevor die Achsen und Serien gezeichnet werden in diesem Fall mit Gradient. Ein normales FillRect tuts natürlich auch

mfg cg

Delphi-Quellcode:
procedure TForm_Schema.Chart1BeforeDrawAxes(Sender: TObject);
var x1,x2,y1,y2 : integer;
begin
   if not (onCalculate or onPrint) then
    begin
     Chart1.Canvas.ClipRectangle(Chart1.ChartRect);
     try
      x1:=Chart1.BottomAxis.CalcPosValue (Chart1.BottomAxis.Minimum-10);
      x2:=Chart1.BottomAxis.CalcPosValue (Chart1.BottomAxis.Maximum+10);

      y1:=Chart1.LeftAxis.CalcPosValue (MaxFlaechen+0.5);
      y2:=Chart1.LeftAxis.CalcPosValue (0);
      Chart1.Canvas.GradientFill(Rect(x1,y1,x2,y2),clWhite,clMoneyGreen,gdTopBottom);

      If MaxVerkauf>0 then
       begin
        y1:=Chart1.LeftAxis.CalcPosValue (MaxFlaechen+0.5);
        y2:=Chart1.LeftAxis.CalcPosValue (MaxVerkauf+0.5);
        Chart1.Canvas.GradientFill(Rect(x1,y1,x2,y2),clMoneyGreen,clWhite,gdTopBottom);
       end;

       if MaxVerkauf>0 then
        y1:=Chart1.LeftAxis.CalcPosValue (MaxVerkauf+0.5)
       else
        y1:=Chart1.LeftAxis.CalcPosValue (MaxFlaechen+0.5);
       y2:=Chart1.LeftAxis.CalcPosValue (Chart1.LeftAxis.Maximum);

       Chart1.Canvas.GradientFill(Rect(x1,y1,x2,y2+1),clWhite,clMoneyGreen,gdTopBottom);
     finally
      Chart1.Canvas.UnClipRectangle;
     end;
    end;
end;
Andreas Schachtner
  Mit Zitat antworten Zitat