Kannst ja auch mal mehrer Pixel pro Timerinterval zeichnen, vielleicht hilft das ja was.
Delphi-Quellcode:
Procedure TForm1.Timer1Timer(Sender: TObject);
Var I: Integer;
Begin
For I := 1 to 20 do
Canvas.Pixels[Random(ClientWidth), Random(ClientHeight)] := clRed;
End;
Statt Width und Height solltest du ClientWidth und ClientHeight verwenden, das gibt die richtige Größe des Canvas an. Bei Width und Height liegen einige gezeichnete Pixel außerhalb des Canvas und es dauert länger, bis alles ausgefüllt wird.
Wenn du es dann noch schafst, das keine Pixel doppelt gezeichnet werden, geht es noch mal viel schneller.
Weitere Timer zu erstellen wird nichts helfen, bei so kurzen Intervallen dürften die sich gegenseitig ausbremsen.
[add]
Ein Thread wird wohl auch nicht viel bringen, die ganze Syncronisation dürfte den Vorteil eines Thread's total vernichten.