Ich würde es so machen, wie ich es beschrieben habe.
Deine Graph-Komponente feuert das Event OnPropertyChange ab, wenn sich etwas geändert hat (Wertebereich, Funktion, Stiftfarbe,...)
Das Formular sollte dann folgenden Eventhandler einsetzen:
Delphi-Quellcode:
proecedure TForm1.Graph1PropertyChange(Sender:tObject);
begin
Paintbox1.Invalidate;
end;
Sollte auf dem Formular statt einer PaintBox ein TImage liegen, dann sähe der Eventhandler so aus:
Delphi-Quellcode:
proecedure TForm1.Graph1PropertyChange(Sender:tObject);
begin
FGraph1.Width := Image1.Width;
FGraph1.Height := Image1.Height;
FGraph1.PaintTo(Image1.Canvas, 0, 0);
end;
Wichtig ist, dass die Methode
PaintTo ALLES zeichnet, also Hintergrund löschen,
Koordinatensystem zeichnen, Funktion zeichnen, Legende zeichnen.
Die Methode
PropertyChange löscht keinen Hintergrund oder zeichnet ein Koordinatensystem (wie von dir beschrieben), sondern feuert nur das Event ab.
Die Anwendung liefert den "Klebstoff" zwischen deiner Graph-Komponente und jeglichem Ausgabe-Canvas.