Hallo,
also wenn ich da optimieren würde, dann als erstes mal indem ich Befehle die unnötig sind zu enfernen.
In deinem Fall würde ich damit beginnen, ein Methode zu schreiben, die die Canvas - bzw. in deinem Fall den Pen vorbereitet.
Delphi-Quellcode:
procedure InitCanvasPen(ACanvas: TCanvas; AColor: TColor; AWidth: Integer);
begin
ACanvas.Pen.Color := AColor;
ACanvas.Pen.Width := AWidth;
end;
Die dann nur einmal am Anfang aufrufen und die entsprechenden Zeilen aus
draw_*
raus nehmen.
Gruß, Chris