Einmal am Canvas zuviel rumgespielt und schon geht es in die Hose.
Um solche unliebsamen Überraschungen zu vermeiden gibt es
TRecall bzw. auch die konkreten Ableitungen für
Delphi-Quellcode:
procedure DoSomething( ACanvas : TCanvas );
var
LPenRecall : TPenRecall;
begin
LPenRecall := TPenRecall.Create( ACanvas.Pen );
try
ACanvas.Pen. // nach Belieben Pen verändern
finally
LPenRecall.Free; // Danach ist ACanvas.Pen wieder wie vorher
end;
end;
Kaum macht man's richtig - schon funktioniert's

Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)