AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

max. TBitmap FMX vs. VCL

Ein Thema von bernhard_LA · begonnen am 22. Aug 2020 · letzter Beitrag vom 23. Aug 2020
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.034 Beiträge
 
Delphi 12 Athens
 
#1

AW: max. TBitmap FMX vs. VCL

  Alt 23. Aug 2020, 15:27
Na dann erstell doch mal so einen QP report...
Auf dass wir das flexibler bekommen.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.557 Beiträge
 
Delphi 12 Athens
 
#2

AW: max. TBitmap FMX vs. VCL

  Alt 23. Aug 2020, 16:50
Es hängt tatsächlich von der verwendeten Canvas-Klasse ab. Man kann da leider nur global drauf Einfluss nehmen.

Standardmäßig wird die TcanvasD2D Klasse verwendet, wenn man die ausschaltet, dann wird TCanvasGDIPlus verwendet, das funktioniert zumindest unter Windows und Linux (MACOS habe ich nicht ausprobiert).

Wenn man also in der .DPR-Datei, direkt als ersten Befehl

 GlobalUseDirect2D := false; eingebt (also noch vor "Application.Initialize"), kann man Grafiken in der Größe 65000x65000 Bildpunkte erzeugen und verarbeiten, siehe anliegenden Screenshot (mit Source-Code) ein geladenes Bild unter Linux mit 21.600 x 10.800 Bildpunkten (größeres Bild habe ich gerade nicht zur Hand).

Dafür muss noch die Unit FMX.Types in die DPR-Datei eingebunden werden.

Die Nichtverwendung von Direct2D wird allerdings nachteilige Auswirkungen auf die allgemeine Performance der App haben, wie groß, müsstest Du prüfen. Unter Umständen könnte man dann überlegen, eine Extra App zu machen, welche für die Verarbeitung dieser großen Bild-Dateien zuständig ist (und dann eben nur dieser Part etwas langsamer wäre).
Angehängte Grafiken
Dateityp: jpg BigImage.jpg (55,3 KB, 16x aufgerufen)

Geändert von Harry Stahl (23. Aug 2020 um 17:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#3

AW: max. TBitmap FMX vs. VCL

  Alt 23. Aug 2020, 17:07
GlobalUseDirect2D := false;
Das wird in RegisterCanvasClasses verwendet, also meinen TestCode angepasst.
Delphi-Quellcode:
if GlobalUseDirect2D then begin
  FMX.Canvas.D2D.UnregisterCanvasClasses;
  TCanvasManager.EnableSoftwareCanvas(False); // um den Cache (FDefaultCanvasClass) zu löschen
end;
with TBitmap.Create(6000, 6000) do begin
  if GlobalUseDirect2D then begin
    FMX.Canvas.D2D.RegisterCanvasClasses;
    TCanvasManager.EnableSoftwareCanvas(False); // um den Cache zu löschen
  end;
  ShowMessage(CanvasClass.ClassName + ' ' + CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize).ToString);
  Free;
end;
Aber neee, hilft nix.


Allerdings das GlobalUseGPUCanvas := True; // FMX.Types ändert es zu "TCanvasGpu 16384" (auch ohne den Deregistrierungs-Code), aber hilft auch nicht viel mehr.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz