Ich habe eine Anwendung entwickelt welche mit BitBlt und z.T. auch Draw über tausend Objekte auf dem Form Canvas malt und habe gar keine Probleme und vor allem keine CPU Last. Ich nutze dabei aber
InvalidateRect(),
TCanvas.ClipRect,
InterSectRect() und wie gesagt
BitBlt(). Bei mir werden Objekte wirklich nur gemalt, wenn sie gemalt werden müssen (schneiden oder innerhalb des ClipRect) und dann auch nur den Teil, den sie malen müssen (IntersectRect() liefert das Übeschneidungsrechteck). Ganz ohne
OpenGL oder andere Dinge..