Eigentlich funktioniert GdiFlush bei einer synchronen Ausgabe.
Im OnPaint ist es meines Erachtens überflüssig, denn hier bist Du in der Windows message loop. Die Frage ist auch, auf welche Canvas Du da gerade zeichnest. Die könnte auch gepuffert sein.
Kleiner Test:
Code:
var i : Integer;
begin
for i := 0 to 100 do
begin
PaintBox1.Canvas.FillRect(Rect(0,0,PaintBox1.Width,PaintBox1.Height));
PaintBox1.Canvas.TextOut(10,10, IntToStr(i));
GdiFlush;
Sleep(10);
end;
end;
Probier mal mit und ohne GdiFlush.
Das geht auch ohne PaintBox
Code:
var i : Integer;
dc : TControlCanvas;
begin
dc := TControlCanvas.Create;
dc.Control := Panel2;
for i := 0 to 100 do
begin
dc.FillRect(Rect(0,0,100,100));
dc.TextOut(10,10, IntToStr(i));
// GdiFlush;
Sleep(10);
end;
dc.Free;
end;