Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: Canvas als Property übergeben...

  Alt 26. Sep 2007, 17:13
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.
Andreas
  Mit Zitat antworten Zitat