Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [FMX] Auflösung Tablets (https://www.delphipraxis.net/178883-%5Bfmx%5D-aufloesung-tablets.html)

zeras 2. Feb 2014 15:42

[FMX] Auflösung Tablets
 
Ich habe ein Nexus 7 neuester Stand mit einer Auflösung von 1.920 x 1.200 Pixel.

Damit möchte ich mit Hilfe eines Canvas einige Sachen zeichnen.

Mit der Funktion

Delphi-Quellcode:
  if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenSvc)) then begin
    Size := ScreenSvc.GetScreenSize;

    ShowMessage(Format('ImageZeiger Breite %.0f, Höhe %.0f',[Size.x, Size.Y]));
  end;
hole ich mir die Auflösung und da wird eine andere Auflösung (960x552) angezeigt.
Was mache ich falsch?

Ich habe nämlich das Problem, dass designte Images nicht gleich dem zur Laufzeit erzeugten übereinstimmen, auch wenn diese die gleiche Größe haben.

Mavarik 2. Feb 2014 15:58

AW: [FMX] Auflösung Tablets
 
"Retina" Display, oder wie auch immer das bei Android heißt.

Genauso wie bei iOS...

Firemonkey rechnet bei einem iPHone mit 320 Width dargestellt wird 640!

zeras 2. Feb 2014 16:23

AW: [FMX] Auflösung Tablets
 
Zitat:

Zitat von Mavarik (Beitrag 1246331)

Firemonkey rechnet bei einem iPHone mit 320 Width dargestellt wird 640!

Danke für die Info.

Komisch ist nur, dass ich ein ASUS Memo HD habe, was bei der Breite 961 anzeigt, das Nexus 7 aber 960. Ich nutze die selbe Funktion, wie oben beschrieben.

Außerdem kommen dann noch andere Effekte:
ASUS Memo HD hat nach Datenblatt 1.280x800, angezeigt wird 960x552 (Höhe durch Toolbar reduziert)
Nexus 7 hat nach Datenblatt 1.920 x 1.200, angezeigt wird 961x552 (Höhe durch Toolbar reduziert)

Da passt das durch 2 dividieren beim Nexus schon aber beim ASUS ist das dann 1,3. Hat das noch irgendwas mit der Pixeldichte zu tun? Ich muss doch eine native Auflösung irgendwo herbekommen, damit ich mal genaue Bitmaps berechnen kann??

zeras 2. Feb 2014 16:38

AW: [FMX] Auflösung Tablets
 
Habs gefunden.

Ich muss neben Size auch noch Scale abfragen mit:

Delphi-Quellcode:
 if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenSvc)) then begin
    Size := ScreenSvc.GetScreenSize;

    Scale := ScreenSvc.GetScreenScale;
  end;
und dann sollte es passen.

Mavarik 2. Feb 2014 16:38

AW: [FMX] Auflösung Tablets
 
Klar


Delphi-Quellcode:
Procedure DDTInitGetScreenScale;
var
 ScreenSrv: IFMXScreenService;
begin
    if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenSrv)) then
      DDTGetScreenScale := ScreenSrv.GetScreenScale
    else
      DDTGetScreenScale := 1.0;
end;

zeras 7. Jul 2015 19:28

AW: [FMX] Auflösung Tablets
 
Ich bin es nochmal zu dem Thema.
Das mit Screenscale habe ich soweit begriffen. Was mir aber beim Test mit verschiedenen Tabletts Probleme macht, ist die vertikale Pixelanzahl.

Bei
Delphi-Quellcode:
 if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenSvc)) then begin
    ScreenSize := ScreenSvc.GetScreenSize;
    ScreenScale := ScreenSvc.GetScreenScale;
end;
bekomme ich bei einem Samsung SM-T110 600 raus. Das ist ja OK, aber müsste nicht der obere Rand, wo die Uhrzeit etc. steht, abgezogen werden? Auf dem Bereich sollte ich ja nicht zeichnen.
Wenn ich dann am oberen Rand ca. 30 Pixel habe, müsste dann die vertikale Auflösung dann nicht 570 sein?
Oder wie komme ich an die Höhe der oberen Statusbar?
Ist schon komisch, wenn ich ein ein Rechteck von 0,0 zeichne, dann fängt es unterhalb der oberen Statusbar an.

Mavarik 7. Jul 2015 20:48

AW: [FMX] Auflösung Tablets
 
Zitat:

Zitat von zeras (Beitrag 1308059)
...bekomme ich bei einem Samsung SM-T110 600 raus. Das ist ja OK, aber müsste nicht der obere Rand, wo die Uhrzeit etc. steht, abgezogen werden? Auf dem Bereich sollte ich ja nicht zeichnen.
Wenn ich dann am oberen Rand ca. 30 Pixel habe, müsste dann die vertikale Auflösung dann nicht 570 sein?
Oder wie komme ich an die Höhe der oberen Statusbar?
Ist schon komisch, wenn ich ein ein Rechteck von 0,0 zeichne, dann fängt es unterhalb der oberen Statusbar an.

Kommt darauf an ob Du eingestellt hast, dass die Statuszeite überlagert werden soll... Meine App schiebt die raus... (Android)

zeras 8. Jul 2015 19:04

AW: [FMX] Auflösung Tablets
 
Zitat:

Zitat von Mavarik (Beitrag 1308066)
Kommt darauf an ob Du eingestellt hast, dass die Statuszeite überlagert werden soll... Meine App schiebt die raus... (Android)

Wie funktioniert das in deiner APP? Ich habe XE5 und könnte im Programm auch Änderungen einbauen.
Ich habe mal im Internet gelesen, dass man die Statusleiste zwar ausblenden kann, aber man würde Rootrechte und eine APP benötigen. Das wollte ich eigentlich nicht.

zeras 10. Jul 2015 21:24

AW: [FMX] Auflösung Tablets
 
Hat keiner eine Idee für mich?
Es gibt doch hier im Forum Tausende von APP's Programmierer oder bin ich der einzige?8-)

BUG 11. Jul 2015 11:14

AW: [FMX] Auflösung Tablets
 
Man könnte das natürlich auch einfach mal googeln: Hiding the Status Bar. Einmal weitergoogeln zeigt dann, wie mal sowas mit FMX angeht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 Uhr.
Seite 1 von 2  1 2      

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