Also mit folgender Vorgehensweise hält man sich alle Möglichkeiten offen:
Delphi-Quellcode:
procedure TForm1.Zeichnen(ACanvas:TCanvas);
begin
ACanvas.MoveTo(10,500);
ACanvas.LineTo(300,500);
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
Zeichnen(self.Canvas);
end;
So sollte man eigentlich immer vorgehen, ganz gleichgültig ob man auf dem Canvas des Formulars, einer Paintbox oder auf ein Image zeichnen möchte.
Damit ist es auch kein Problem die gezeichneten Daten z.B. auf dem Printer.Canvas auszugeben.
Empfehlenswert ist auch der Zeichenmethode zusätzlich die Anfangkoordinaten mitzugeben:
Delphi-Quellcode:
procedure TForm1.Zeichnen(ACanvas:TCanvas; x,y:Integer);
begin
ACanvas.MoveTo(10+x,500+y);