Hab noch ein bischen rumgespielt ...
Ich erzeuge 4 Teilbitmps in Threads, diese werden dan in einem Taeget Bitmap zusammengebaut.
Wenn Alle Threads fertig sind wird das komplette Target in das Image geschrieben, mit
Delphi-Quellcode:
procedure DoDrawBitmap(const ACanvasDst : TCanvas;
const ADstRc : TRectF;
const ASrcBmp : TBitmap);
var
LDstRc: TRectF;
begin
if ACanvasDst.BeginScene then
try
LDstRc := RectF(0, 0, ADstRc.Width, ADstRc.Width);
LDstRc.Offset( ADstRc.TopLeft );
ACanvasDst.DrawBitmap(ASrcBmp, // Src bmp full
RectF(0,0, ASrcBmp.Width, ASrcBmp.Height), // Src rc full
LDstRc, // dst part bmp to dst canvas
1);
finally
ACanvasDst.EndScene;
end;
end;
Wird das Teil-Bmp in das Tgt-Bmp geschrieben.
Funktioniert auf Win, OSX, And, aber noch nicht auf iOS
Sorry, der Code ist noch ein bischen wüst, durch die ganzen Tests, ich hoffe das erkennt man noch wieder
Ob es jetzt Threadmäßig optimal ist wage ich auch zu bezweifeln, mit ging es erstmal drum das
Scaling und Printing überhaupt funktioniert.
Die Performance ist bei mit jedenfalls im Bereich 60-160FPS, je nach Plattform.
Aber wie man das auf eine optimale Performance bringt, vor Allem auch auf allen Platformen, ist noch nicht klar.
Womöglich
mit TScene von Eugene, der Teilbereiche bei dem Bildupdate berücksichtigt, während FMX immer das ganze Bild updated.
Vielleicht hat ja noch jemand Ideen dazu.
Rollo