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 22. Aug 2020, 15:48
Wollte ich mal, aber hatte noch keine Zeit Lust.

Und dann hilft es auch nur im Windows.
Ich weiß garnicht ob das FMX-TBitmap im Windows auch die Systemfunktionen verwendet.
Ja, aber selbst wenn's nur für die VCL was bringt wär's doch eine gute Sache.
Und soviel Zeit braucht ein kleiner QP Report ja auch nicht.
Die Frage ist dabei, ob das ein Bugreport oder ein Feature Request wäre.

Falls du schon Code hast und den teilen wolltest/könntest wär's natürlich noch besser,
aber evtl. reicht da auch schon ein kleines Fragment aus um EMBT die richtige Richtung
zu zeigen...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: max. TBitmap FMX vs. VCL

  Alt 22. Aug 2020, 15:56
Mir war so, als hätte ich auch Teile im Forum, aber fand den Beitrag grade nicht (von letztem Jahr, wenn ich mich nicht irre).
Vor paar Monaten war ich in der Firma nochmal drüber gestolpert, denn jetzt war jemandem was aufgefallen.
Cheff eines Kunden hatte ein Foto der neuen Maschine ins DMS geladen, die war Rot, aber in der Vorschau Blau (oder andersrum) ... am Ende hatte ich im WIC einen Parameter RGB mit BGR vertauscht.

Mein Problem war vor allem PDFs (inzwischen DevExpress) und Bilder (BMP, TIFF, GIF, PNG, JPEG) multithreated zu laden, runterzuskallieren und dann in der GUI anzuzeigen.
Teilweise extrem große/detailierte PDFs/Bilder. (technische Zeichnungen)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Aug 2020 um 16:00 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

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

AW: max. TBitmap FMX vs. VCL

  Alt 22. Aug 2020, 15:58
Na dann auf Report schreiben
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: max. TBitmap FMX vs. VCL

  Alt 22. Aug 2020, 17:20
wir machen natürlich alles in x64, RAM 16 GBYTE und mehr vorhanden .......;
Die 500 x 500 pixel waren nur ein Code Fragment und als Beispiel gedacht

unter VCL ging bei uns wie bereits geschrieben h=20.000 und W= 20.000 , 30.000 pixel * 15.000 pixel waren auch möglich, aber eben nicht 50k * 50K Bitmaps,
alles mit pf24bit.

Wer kann über große FMX Bitmaps berichten, Grafikformat *.jpg, *.tig oder *.bmp ?
ist hier der Video Speicher entscheidend , muss man was im Win hierfür konfigurieren ?
Was wäre das beste Pixelformat unter FMX ???
Will mit diesem Code dann auch unter LINUX wieder arbeiten können ....

Geändert von bernhard_LA (22. Aug 2020 um 17:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: max. TBitmap FMX vs. VCL

  Alt 22. Aug 2020, 17:46
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
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Aug 2020 um 17:53 Uhr)
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: max. TBitmap FMX vs. VCL

  Alt 22. Aug 2020, 21:40
8K * 8K pixel ist ja gar nix .....
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: max. TBitmap FMX vs. VCL

  Alt 23. Aug 2020, 12:15
Ich vermute mal stark, dass das letztlich damit zusammen hängt, dass FMX mittels D3D zeichnet, und Bitmaps daher als Textur eingehen. So weit ich weiß, sind die maximalen Texturgrößen gerade bei den Nicht-Gamer-Grafikkarten teils ziemlich begrenzt - 8192² scheint mir da plausibel.

Wahrscheinlich muss man die Bilddatei vorab in eine eigene Datenstruktur bringen, aus der man dann Pixeldaten in kleineren Rechtecken zur Anzeige an die API geben kann. Man verliert natürlich die ganzen vorgefertigten Zeichenfunktionen - es sei denn, man führt diese auf den kleineren Rechtecken in einem API Bitmap aus, und überträgt diese wieder zurück in die eigene Struktur.

Letztlich bleibt aber auch festzuhalten, dass Bitmaps solcher Größe klar in die Rubrik "Spezialanwendung" fallen, deren native Unterstützung man, finde ich, nicht unbedingt in einer so allgemein gedachten API wie FMX (oder auch VCL) voraussetzen kann.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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 22:02 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