Ich habe damit mal ein bischen rumgespeilt, mit TCriticalSectios, Events, etc.
Auch mit mehreren Teil-Bildern wenn ich die Bilder von mehreren Paintern vorbereite, und dann das Ergebnis per Timer abhole.
Es verhält sich auf Allen Platformen anders, auf OSX und IOS kann es mal Laufen, aber auf Android habe ich es nicht hinbekommen.
Ich vermute mal es liegt am TImage, auch BeginUpdate und Image.Canvas.BeginScene hilft nicht viel.
Vieleicht muss man das besser über ein Bitmap im Hintergrund machen, und da dan dem Image.Bitmap zuweisen.
Es gibt viele Wege, aber Alles hat Vor- und Nachteile, und ist anscheinend recht lahm.
Wäre schön wenn EMBA mal ein Demo dazu rausgeben würden, bei dem die Performance optimal bleibt.
Ansonsten
ist das vielleicht ein Ansatz, von Eugene Kryukov, um das Zeichnen von Teilbereichen zu beschleunigen.
Funktioniert bei mir ganz gut, setze ich aber noch nicht produktiv ein.
Edit:
Und GetPixel statt Copy macht auch einen Unterschiede, damit geht es zuverlässiger (aber natürlich langsamer).
Delphi-Quellcode:
for y := 0 to LDataRead.Height-1 do
for x := 0 to LDataRead.Width-1 do
begin
LDataWrite.SetPixel( x + LOfsX, y + LOfsY, LDataRead.GetPixel( x, y) );
end;
// statt LDataWrite.Copy(LDataRead);
Rollo