![]() |
[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:
hole ich mir die Auflösung und da wird eine andere Auflösung (960x552) angezeigt.
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; 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. |
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! |
AW: [FMX] Auflösung Tablets
Zitat:
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?? |
AW: [FMX] Auflösung Tablets
Habs gefunden.
Ich muss neben Size auch noch Scale abfragen mit:
Delphi-Quellcode:
und dann sollte es passen.
if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenSvc)) then begin
Size := ScreenSvc.GetScreenSize; Scale := ScreenSvc.GetScreenScale; end; |
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; |
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:
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.
if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenSvc)) then begin
ScreenSize := ScreenSvc.GetScreenSize; ScreenScale := ScreenSvc.GetScreenScale; end; 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. |
AW: [FMX] Auflösung Tablets
Zitat:
|
AW: [FMX] Auflösung Tablets
Zitat:
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. |
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-) |
AW: [FMX] Auflösung Tablets
Man könnte das natürlich auch einfach mal googeln:
![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 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 by Thomas Breitkreuz