Da hast du jetzt ein Problem, beim FMX.Graphics.TBitmap
Delphi-Quellcode:
procedure TBitmap.SetSize(const AWidth, AHeight: Integer);
begin
..
if (AWidth > CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) or
(AHeight > CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize))
then
raise EBitmapSizeTooBig.CreateRes(@SBitmapSizeTooBig);
Das hier klingt zwar nett,
Delphi-Quellcode:
type
TCanvas = class abstract(TInterfacedPersistent)
public const
MaxAllowedBitmapSize = $FFFF;
aber im FMX für Windows landet es bei TCanvasD2D und dort ist es nur 8192.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
with TBitmap.Create(6000, 6000) do begin
ShowMessage(CanvasClass.ClassName + ' ' + CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize).ToString);
Free;
end;
end;
Eventuell kann man das TBitmap auch mit einem anderen BitmapImage/Canvas erstellen?
siehe TBitmapImage.CreateHandle -> CanvasClass.InitializeBitmap -> ...
oder TBitmap.GetCanvasClass -> TBitmapImage.GetCanvasClass -> TCanvasManager.GetDefaultCanvas -> FDefaultCanvasClass