Versuche doch mal mit deiner Orginalfunktion (die ja MakeScreensot entspricht)
die Scalings und Rect Width/Height von Hand anzupassen.
Ich hatte damals ähnliche Probleme, nicht mit 3D, aber auch da musste ich iOS und Android von Hand anpassen bis PaintTo und Bitmap richtig gepasst haben.
Delphi-Quellcode:
function TControl.MakeScreenshot: TBitmap;
var
SceneScale: Single;
begin
if Scene <> nil then
SceneScale := Scene.GetSceneScale
else
SceneScale := 1;
Result := TBitmap.Create(Round(Width * SceneScale), Round(Height * SceneScale));
Result.BitmapScale := SceneScale;
Result.Clear(0);
if Result.Canvas.BeginScene then
try
PaintTo(Result.Canvas, TRectF.Create(0, 0, Result.Width / SceneScale, Result.Height / SceneScale));
finally
Result.Canvas.EndScene;
end;
end;
Ich stelle übrigens bei mir mit Entsetzen beim Debuggen in iOS fest das mein Modul in FMC.Contols out-of-sync ist, also die blauen Breakpointpunkte passen nicht zum Code.
Ich habe aber nichts geändert/kompiliert, etc., nur das letzte Hotfix eingespielt.
Muss ich checken, ist das bei dir womöglich auch so ?
Rollo