AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi FMX Umgang mit MacOS und vermutlich auch iOS Auflösungen
Thema durchsuchen
Ansicht
Themen-Optionen

FMX Umgang mit MacOS und vermutlich auch iOS Auflösungen

Ein Thema von Sherlock · begonnen am 29. Jul 2016 · letzter Beitrag vom 1. Aug 2016
Antwort Antwort
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#1

FMX Umgang mit MacOS und vermutlich auch iOS Auflösungen

  Alt 29. Jul 2016, 13:48
Ich weiss nicht genau, wie man das Problem/Verhalten bezeichnet, ich versuchs mal zu beschreiben:
Ich habe mit FMX eine Anwendung geschrieben, die auf ein Bitmap zeichnet. Das Zeichnen soll möglichst in Originalgröße geschehen (es geht um einige cm, keine Sorge). Dazu kann ich unter Windows bisher Problemlos die dpi per TDeviceDisplayMetrics.PixelsPerInch abfragen und durch 2,54 teilen, schon habe ich PixelsPerCentimeter (ppc). Fein. Wenn ich jetzt also etwas auf den Canvas des Bitmaps zeichne, dann immer mit dem Faktor für ppc kombiniert, und das klappt prima. Jetzt hab ich die Anwendung zum Test auf MacOS ausgeführt und alles ist viel zu groß. Ich verstehe ungefähr, was los ist, aber ich weiß nicht wie ich das korrigiere. Mein MacBook hat eine native Auflösung von 2880x1800. Bei 15" macht das 226 dpi, die meine Anwendung übrigens auch tatsächlich so erhält. Leider ist es aber so, daß MacOS eine "logische" Auflösung von 1440x900 "bereitstellt". Was ich darauf male wird viel zu groß angezeigt. Wie kann ich das berücksichtigen/korrigieren? Ich bin normalerweise was Google betrifft nicht ganz hilflos, aber meine Suchanfragen führen immer wieder nur zu HighDPI Themen, die komplette Applikationen und Komponentengrößen und Manifestdateien betreffen. Ich will aber nur wissen, wie ich den entsprechenden Umrechnungsfaktor beim Zeichnen in die Bitmap herausfinden, und berücksichtigen kann. Es muss vermutlich irgendwo auch bei den TDeviceDisplayMetrics zu finden sein, aber das ist ungefähr so gut Dokumentiert wie ...naja, wie halt sonst alles von Emba

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: FMX Umgang mit MacOS und vermutlich auch iOS Auflösungen

  Alt 29. Jul 2016, 14:26
Was du vermutlich suchst ist:

Delphi-Quellcode:
var
  DeviceSvc: IFMXDeviceMetricsService;
...
DeviceSvc.GetDisplayMetrics.ScreenScale
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: FMX Umgang mit MacOS und vermutlich auch iOS Auflösungen

  Alt 29. Jul 2016, 14:38
Gnarf...so nah, daß ichs übersehen hatte

Aber hmmm, es ist ein wenig besser, wenn ich jetzt meine ppc (PixelProCentimeter) durch ScreenScale teile ...aber wirklich nur ein wenig. Erst wenn ich durch doppelte ScreenScale dividiere passt es wirklich. Das ist...mysteriös und ungünstig. Denn wenn ScreenScale=1, dann stimmt alles zu 100% und ich sollte nicht die ScreenScale verdoppeln. Hmmmm, irgendwie hab ich eventuell noch einen Denkfehler.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FMX Umgang mit MacOS und vermutlich auch iOS Auflösungen

  Alt 29. Jul 2016, 14:58
OK, jetzt teile ich wo es sein muss durch das Quadrat von ScreenScale und es passt. Schriftgröße wird direkt durch ScreenScale geteilt, das stimmt dann auch. ein bisschen komisch, aber es geht jetzt zuverlässig auf allen Systemen.

Danke bra!!

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#5

AW: FMX Umgang mit MacOS und vermutlich auch iOS Auflösungen

  Alt 29. Jul 2016, 18:26
mach doch bitte mal ein MiniTestProjekt wo auf einem FMX Form ein paar Quadratesind und ein paar Labels mit InfoText wie (groß) es wie aus sehen soll.
Dann noch einen Screenshot von deinem Mac(Book) und wir haben alle was zu probieren

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: FMX Umgang mit MacOS und vermutlich auch iOS Auflösungen

  Alt 30. Jul 2016, 07:27
Das ding mit der retina Auflösung ist folgendes...

Gerechnet wird immer mit der Auflösung 1:1, Die Bilder müssen aber für Scale 2 oder 3 (6+) oder auch Android (1,5)
in entsprechender Auflösung vorliegen.

Beispiel:

300x300 pixel image.
Image muss 300x300 sein. Dann option nicht auf fit, sondern auf original und das Multiresbitmap belegen mit der Scalierung.

Mavarik
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.908 Beiträge
 
Delphi 12 Athens
 
#7

AW: FMX Umgang mit MacOS und vermutlich auch iOS Auflösungen

  Alt 30. Jul 2016, 09:20
Zitat:
komisch, aber es geht jetzt zuverlässig auf allen Systemen.
Ihr Glücklichen ...

Ich habe je nachdem im OnPaint beim Canvas auch noch verschiedene Canvas.Scale und beim Bitmap
verschiedene BitmapScale.
Muss ich von Hand in der jeweiligen Situation anpassen.

Nur mit dem SceneScale kann ich das nicht immer korrigieren, und eine einfache Regel dafür habe ich noch nicht gefunden wann Canvas.Scale und BitmapScale gesetzt werden.

- Wenn ich eine Bitmap mit TBitmap.Create anlege gibt es auf jeden Fall andere Settings als in einem OnPaint.
- Auch wenn ich ein Object mit MakeScreenShot aufnehme gibt es andere Settings.
- Beim Schreiben von Text in ein Bitmap reagiert die Routine anscheinend auf andere Scale Settings

Ich will es gerne nochmal mit Frank's einfacher Regel Testen, aber da bin ich sicher das hatte ich schonmal
so getestet.
Naja, vielleicht war bei dem ganzen Hin und Her etwas falsch gelaufen.

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: FMX Umgang mit MacOS und vermutlich auch iOS Auflösungen

  Alt 1. Aug 2016, 12:41
Also ich hab mal ein kleines Testprojekt erstellt, indem ich eine Art Millimeterpapier zeichne. Es ist 8cm hoch und nutzt die Breite, die der Anwendung gegeben wird (ist etwas speziell, aber ich wollte jetzt nicht alles neu erfinden).

Es funktioniert unter Windows und MacOS. Unter iOS bekomme ich einen Fehler beim ersten Click auf Paint, danach nicht mehr...ich vermute, daß das Bitmap eines TImage unter iOS noch nicht existiert.

Frank: Ich verstehe nicht ganz, was das mit den MultiresBitmaps zur Laufzeit soll. Ich hoffe doch sehr, daß sich die Auflösung nicht ständig ändert. Daher nutze ich für fixe Bilder MultiresBitmaps, damit die Anwendung die jeweils passende Version bekommt, aber für dynamisch erstellte Bilder nutze ich den ganz normalen Canvas einer Bitmap, sonst müsste ich ja alles doppelt und dreifach malen.

Sherlock
Angehängte Dateien
Dateityp: zip scalingtest.zip (2,8 KB, 2x aufgerufen)
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  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:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz