Delphi-PRAXiS

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/)
-   -   [firemonkey] - Pixeldichte erhöhen (https://www.delphipraxis.net/184668-%5Bfiremonkey%5D-pixeldichte-erhoehen.html)

stoxx 13. Apr 2015 13:33

[firemonkey] - Pixeldichte erhöhen
 
Ich habe hier ein Gerät mit 720 x 1280 Pixeln. (echten physischen Bildpunkten)

Dennoch hab ich in meiner Firemonkey Anwendung nur 360x615 Bildpunkte zur Verfügung. (self.width x self.heigth)
Bilder und Schriften sind dadurch unnötig unscharf, was nicht sein müsste.

Jetzt findet man im Netz an 2 Stellen eine dubiose 160 ppi, welche Firemonkey maximal untestützten würde.
Was ich mir aber nicht vorstellen kann, dann wäre das ganze Firemonkey Framework eigentlich recht ungeeignet für noch neuere Gerätegenerationen.

Weiß jemand, wie man die Pixeldichte höher einstellen kann?
Recht vielen Dank!

Mavarik 13. Apr 2015 13:42

AW: [firemonkey] - Pixeldichte erhöhen
 
Zitat:

Zitat von stoxx (Beitrag 1297509)
Ich habe hier ein Gerät mit 720 x 1280 Pixeln. (echten physischen Bildpunkten)

Dennoch hab ich in meiner Firemonkey Anwendung nur 360x615 Bildpunkte zur Verfügung. (self.width x self.heigth)
Bilder und Schriften sind dadurch unnötig unscharf, was nicht sein müsste.

Jetzt findet man im Netz an 2 Stellen eine dubiose 160 ppi, welche Firemonkey maximal untestützten würde.
Was ich mir aber nicht vorstellen kann, dann wäre das ganze Firemonkey Framework eigentlich recht ungeeignet für noch neuere Gerätegenerationen.

Weiß jemand, wie man die Pixeldichte höher einstellen kann?
Recht vielen Dank!

emm...

Firemonkey arbeitet immer mit Auflösung 1...

Bedeutet, wenn Du ein Image auf Vollbild machst brauchst Du die Auflösung 360x615
dieses wird dann hochskalliert. Damit das nicht passiert, kannst Du das gleiche bild in doppelter 2x auch noch hinlegen.
(1.5x,2.5x,3.0x) geht natürlich auch... FMX nimmt dann das Bild welches am besten passt.
Das gleiche gilt auf für die Styles die gibt es in 1x 2x 3x (XE8)
Deine Clientwidth ändert sich nicht... Das ist für die Interne Berechnung immer gleich...

Mavarik

stoxx 13. Apr 2015 13:56

AW: [firemonkey] - Pixeldichte erhöhen
 
Zitat:

Zitat von Mavarik (Beitrag 1297510)
emm...

Firemonkey arbeitet immer mit Auflösung 1...

Bedeutet, wenn Du ein Image auf Vollbild machst brauchst Du die Auflösung 360x615
dieses wird dann hochskalliert. Damit das nicht passiert, kannst Du das gleiche bild in doppelter 2x auch noch hinlegen.
(1.5x,2.5x,3.0x) geht natürlich auch... FMX nimmt dann das Bild welches am besten passt.
Das gleiche gilt auf für die Styles die gibt es in 1x 2x 3x (XE8)
Deine Clientwidth ändert sich nicht... Das ist für die Interne Berechnung immer gleich...

Mavarik

ich denke, wir reden aneinander vorbei.
Hier näheres zur Thematik unter native Android.

http://developer.android.com/guide/p...t.html#support

Der interne Firemonkey Scale Faktor ist mir dabei erstmal unwichtig.
Wenn ich ein Bild mit 1024 x 800 Punkten habe, kann ich das nicht in hochauflösender Darstellung auf dem Bildschirm bringen, da ich ja nur 360 x 615 Bildpunkte habe.

Es geht auch hauptsächlich um Schriften, die im Firemonkey mit 160 ppi nicht so gestochen scharf dargestellt werden, wie mit einer Android Anwendung.

Delphi würde demnach nur mdpi unterstützen, hdpi, xhdpi usw. würden gänzlich fehlen.

ldpi (low) ~120dpi
mdpi (medium) ~160dpi
hdpi (high) ~240dpi
xhdpi (extra-high) ~320dpi
xxhdpi (extra-extra-high) ~480dpi
xxxhdpi (extra-extra-extra-high) ~640dpi

Mavarik 13. Apr 2015 14:38

AW: [firemonkey] - Pixeldichte erhöhen
 
Zitat:

Zitat von stoxx (Beitrag 1297514)
ich denke, wir reden aneinander vorbei.
Hier näheres zur Thematik unter native Android.

http://developer.android.com/guide/p...t.html#support

Der interne Firemonkey Scale Faktor ist mir dabei erstmal unwichtig.
Wenn ich ein Bild mit 1024 x 800 Punkten habe, kann ich das nicht in hochauflösender Darstellung auf dem Bildschirm bringen, da ich ja nur 360 x 615 Bildpunkte habe.

Der link zu Android hat NIX mit Firemonkey zu tun...

Nochmal... Deine 360x615 ist lediglich eine interne Rechengrundlage. Wenn Du eine native Auflösung hast die 4x hoher ist, musst Du die Grafiken auch 4x so groß hin legen... Die werden dann auch verwendet... Da die Styles auch "nur" Grafiken sind gilt das hier auch!

Welche Delphi Version verwendest Du?

stoxx 13. Apr 2015 15:42

AW: [firemonkey] - Pixeldichte erhöhen
 
Zitat:

Zitat von Mavarik (Beitrag 1297517)

Der link zu Android hat NIX mit Firemonkey zu tun...

najaa .. auch bei Multiplatformentwicklung würden ein paar Grundlagen der darunterliegenden Betriebssysteme nicht schaden *zwinker*


Zitat:

Zitat von Mavarik (Beitrag 1297517)
Nochmal... Deine 360x615 ist lediglich eine interne Rechengrundlage. Wenn Du eine native Auflösung hast die 4x hoher ist, musst Du die Grafiken auch 4x so groß hin legen... Die werden dann auch verwendet... Da die Styles auch "nur" Grafiken sind gilt das hier auch!

Welche Delphi Version verwendest Du?

Du verwechest da was grundsätzlich, oder bist Dir der Thematik gar nicht bewusst.
Streich einfach mal den Firemonkey Scale Faktor kurzzeitig aus Deinem Kopf.
Das ist nur dazu da, wenn man eine App für ein Handy entwickelt, dass diese nicht verschwommen auf einem Tablet aussehen würde, wenn man einfach hochscaliert.

Nimm einfach ein TImage, setz einen Button drauf, und gib Dir die Höhe und Breite des Bildes aus, selbst ein Bild mit 720x1280 Punkten wird runtergerechnet auf
360 x 615.
Eben halt auf mdpi.
Android stellt nur virtuelle Pixel zur Verfügung, je nach ppi Dichte, die man haben möchte bzw das gerät überhaupt unterstützen kann.
Und genau das möchte ich nicht, da heutige Displays viel höher auflösen können, als noch vor 3 Jahren.

Phoenix 13. Apr 2015 15:52

AW: [firemonkey] - Pixeldichte erhöhen
 
Zitat:

Zitat von stoxx (Beitrag 1297534)
Zitat:

Zitat von Mavarik (Beitrag 1297517)

Der link zu Android hat NIX mit Firemonkey zu tun...

najaa .. auch bei Multiplatformentwicklung würden ein paar Grundlagen der darunterliegenden Betriebssysteme nicht schaden *zwinker*

Würden sie nicht und sollten sie eigentlich auch nicht. Aber Firemonkey abstrahiert Dich so weit von dem darunterliegenden Betriebssystem weg, dass es Dir egal zu sein hat, was daruner liegt, oder welche native Auflösung Dein Gerät jetzt kann.


Zitat:

Zitat von stoxx (Beitrag 1297534)
Nimm einfach ein TImage, setz einen Button drauf, und gib Dir die Höhe und Breite des Bildes aus, selbst ein Bild mit 720x1280 Punkten wird runtergerechnet auf
360 x 615. Eben halt auf mdpi.
Android stellt nur virtuelle Pixel zur Verfügung, je nach ppi Dichte, die man haben möchte bzw das gerät überhaupt unterstützen kann.
Und genau das möchte ich nicht, da heutige Displays viel höher auflösen können, als noch vor 3 Jahren.

Dann musst Du nativ für die Geräte entwickeln, und nicht eine unzulängliche Zwischenschicht reinziehen, die Dich zu zu einer Abstraktion zwingt.

stoxx 13. Apr 2015 16:32

AW: [firemonkey] - Pixeldichte erhöhen
 
Zitat:

Zitat von Phoenix (Beitrag 1297539)
Würden sie nicht und sollten sie eigentlich auch nicht. Aber Firemonkey abstrahiert Dich so weit von dem darunterliegenden Betriebssystem weg, dass es Dir egal zu sein hat, was daruner liegt, oder welche native Auflösung Dein Gerät jetzt kann.


das Betriebssystem wäre mir in der Tat egal, aber das technische Gerät darunter interessiert mich dann allerdings schon.
"Der Unterschied zwischen Theorie und Praxis ist in der Praxis weit höher als in der Theorie."


Zitat:

Zitat von Phoenix (Beitrag 1297539)
Dann musst Du nativ für die Geräte entwickeln, und nicht eine unzulängliche Zwischenschicht reinziehen, die Dich zu zu einer Abstraktion zwingt.

:gruebel:
Oder ich suche nach Lösungen, die unzulänglichkeit zu beheben? Was hälst Du davon? Ich stellte doch lediglich die Frage, welche Möglichkeiten es gibt, die Pixeldichte zu erhöhen.


.

Mavarik 13. Apr 2015 17:53

AW: [firemonkey] - Pixeldichte erhöhen
 
Zitat:

Zitat von stoxx (Beitrag 1297534)
Du verwechest da was grundsätzlich, oder bist Dir der Thematik gar nicht bewusst.
Streich einfach mal den Firemonkey Scale Faktor kurzzeitig aus Deinem Kopf.
Das ist nur dazu da, wenn man eine App für ein Handy entwickelt, dass diese nicht verschwommen auf einem Tablet aussehen würde, wenn man einfach hochscaliert.

Nimm einfach ein TImage, setz einen Button drauf, und gib Dir die Höhe und Breite des Bildes aus, selbst ein Bild mit 720x1280 Punkten wird runtergerechnet auf
360 x 615.
Eben halt auf mdpi.

Boh ej...

Vergiss doch mal den VCL-Quark ein Image ist so groß wie die Dimension des Images...

Deswegen nennt sich das ja MultiResBitmap... Weil Du da ein Image mit der doppelten Größer oder einem Vielfachen angeben kannst und dann werden die Pixel nativ angesprochen...

stoxx 16. Apr 2015 17:31

AW: [firemonkey] - Pixeldichte erhöhen
 
Zitat:

Zitat von Mavarik (Beitrag 1297563)

Boh ej...

Vergiss doch mal den VCL-Quark ein Image ist so groß wie die Dimension des Images...

Deswegen nennt sich das ja MultiResBitmap... Weil Du da ein Image mit der doppelten Größer oder einem Vielfachen angeben kannst und dann werden die Pixel nativ angesprochen...

Zum ersten, ich rede nicht von VCL, sondern von einem TImage unter Firemonkey.
Dachte das wäre klar, dass man unter Android keine VcL zum laufen bringt.

Und muss ich Dir wirklich erst mit einem nativen Android Screenshot beweisen, und ein Treppchen Bild malen, damit du dann gezoomt die effektiven Pixel auszählen kannst, damit Du glaubst, dass Du auf dem Holzweg bist?
aber richtig gewaltig auf dem Holzweg.

und warum hat dann das gleiche TImage unter Windowas viel mehr effektive Pixel?
Das sollte Dir zu denken geben.
Was ist denn überhaupt Dein Gerät mit der höchsten ppi Dichte, damit du das mal testen kannst?
PPI = Pixel pro Inch

Deine von Dir gern aber leider falsch zitierten Multiresbitmaps haben damit gar nix zu tun, sondern diese kommen lediglich zum Tragen, wenn Du mit den Scale Faktoren arbeitest (und/oder mit TLayouts)

stoxx 16. Apr 2015 18:10

AW: [firemonkey] - Pixeldichte erhöhen
 
vielleicht machts ja mit folgedem Beispiel "klick"?

wenn also mein TImage eine Dimension von 360 x 615 Punkten hat, mein Gerät aber bei einem 5 Zoll Display eine Auflösng von 1280 x 720
Nun .. da sollte eigentlich ersichtlich sein, dass da Punkte fehlen.
Oder wie würdest du den 361 sten Bildpunkt von Hand rot darstellen wollen?
oder den 500 sten?

und wo lägen die Punkte vor allen Dingen dann?

Sir Rufo 16. Apr 2015 18:23

AW: [firemonkey] - Pixeldichte erhöhen
 
Zitat:

Zitat von stoxx (Beitrag 1298043)
vielleicht machts ja mit folgedem Beispiel "klick"?

Evtl. macht es ja auch klick (bei wem auch immer) wenn man einen Blick in die Dokumentation wirft.

MultiResBitmap-Editor

Der erste Satz ist dabei sehr interessant
Zitat:

Mit dem MultiResBitmap-Editor können Sie beim Entwurf die Eigenschaften von Bitmaps mit Mehrfachauflösung bearbeiten. Ein Bitmap mit Mehrfachauflösung ist eine Bitmap-Sammlung, die für jeden Skalierungsfaktor ein Bitmap enthält. Beispielsweise benötigt eine iOS-App Bilder für festgelegte Retina- und Nicht-Retina-Geräte. Die verschiedenen Bitmap-Elemente können aus denselben oder unterschiedlichen Quellbilddateien stammen.
und weiter heißt es
Zitat:

Auf dem jeweiligen Gerät ruft TImage zur Laufzeit das geeignetste Bitmap für die Anzeige aus der Bitmap-Sammlung in TFixedMultiResBitmap ab. Die erhaltene Skalierung des Bitmaps sollte am besten für den Bildschirm passen, auf dem das Bitmap angezeigt wird.
Wenn es jetzt immer noch kein Besuch von Susanne Klicker-Klacker da war, dann hilft einfach nur noch ausprobieren, so wie in dem Link gezeigt.

stoxx 16. Apr 2015 18:35

AW: [firemonkey] - Pixeldichte erhöhen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1298044)

Evtl. macht es ja auch klick (bei wem auch immer) wenn man einen Blick in die Dokumentation wirft.

MultiResBitmap-Editor

warum muss man denn immer gleich frech werden, vor allen Dingen, wenn man einen Sachverhalt noch nicht verstanden hat?
Das ist alles nicht das Thema.

Anleitung zum Verstehen:


Nochmal ..
Bitte ein TImage auf ein Formular packen.
Vollbild.
alClient ...
Physikalische Auflösung in der Bedienungsanleitung des eigenen Gerätes nachschauen.

z.b. 5 Zoll Gerät und feststellen, es kann 1280 x 720 Bildpunkte darstellen.

Dann ein Bild bei google suchen
(einfach 720 x 1280) eingeben, dann auf Bildersuche.
Bild raussuchen, dann auf TImage packen.
Einen Button auf die Anwendung packen.
Die Dimension des TImage ausgeben

(self.width und self.height = formular Dimensionen)
(img1.width und img1.height = Dimension vom TImage)

Anwendung auf das mobile Gerät bringen.
ohje .. feststellen, dass das Bild viel kleiner als 1280 x 720 Bildpunkte ist.

Außerdem sieht man das bei Schriften.
Ich wollte ja nur scharfe Schriften, (also gestochen scharfe)
Da das nicht ging, bin ich dem Thema auf dem Grund gegangen.
Ich hab nie nach Multiresbitmaps gefragt!!!!!


Zitat:

Zitat von Sir Rufo (Beitrag 1298044)
Wenn es jetzt immer noch kein Besuch von Susanne Klicker-Klacker da war

Ich glaub, das wird Dir noch peinlich sein....
.

stoxx 16. Apr 2015 18:53

AW: [firemonkey] - Pixeldichte erhöhen
 
Zitat:

Auf dem jeweiligen Gerät ruft TImage zur Laufzeit das geeignetste Bitmap für die Anzeige aus der Bitmap-Sammlung in TFixedMultiResBitmap ab. Die erhaltene Skalierung des Bitmaps sollte am besten für den Bildschirm passen, auf dem das Bitmap angezeigt wird.

ja, da steht nur, was am besten passen würde.
Und ist nur wirklich wichtig, wenn Du für ein kleines handy entwickelst, und dann auf einmal die gleiche Anwendung auf ein Tablet hochziehst.
unter Android kannst du auch IMMER hoch aufgelöste Bilder hinterlegen, also gleich fürs Tablet entwickeln, die dann klein gerechnet werden, wenn die Anwendung auf einem handy läuft (und du den Scale faktor benutzt)
Nur Apple scheint das aus Performance technischen Gründen nicht zu mögen, und möchte verschiedenen Bilder hinterlegt haben.

Da steht also nur, was am besten passen würde.
Meine Frage war aber, dass scheinbar 160 PPI das Maximum (unter firemonkey) zu sein scheint.
Und wie ich dieses erhöhen könne.
Mehr hab ich nicht gefragt.

Sir Rufo 16. Apr 2015 19:17

AW: [firemonkey] - Pixeldichte erhöhen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Wie groß machst du denn das Formular zur Entwurfszeit?

Sag jetzt bitte nicht "So groß wie die physikalische Dimension des Ziel-Device."

Denn das ist absolut falsch, denn (ein weiterer Link aus der Dokumentation)
http://docwiki.embarcadero.com/RADSt...aufl%C3%B6sung

Und da heißt es zudem
Zitat:

Skalierung: FireMonkey verwendet logische Koordinaten und logische Größen. Bei Bitmaps mit Mehrfachauflösung schätzt FireMonkey mithilfe der Eigenschaft Scale (Skalierung) die Beziehung zwischen logischen Einheiten und physikalischen Einheiten ein.
Ich habe es übrigens gerade mit einem Samsung GALAXY Note 10.1 (2560x1600 phys./1280x800 log.) ausprobiert und dort in eine Form (1280x800) ein TImage geklatscht (so groß wie das Formular) und dann zwei Bilder dort hinterlegt.
  • Scale 1.0 = 1280x800
  • Scale 2.0 = 2560x1600
Die exakte Dimension habe ich vorher noch als Text in das Bild gelegt. Und siehe da, obwohl die Form und die Image-Komponente nur eine Größe von 1280x800 haben wird mir (gestochen scharf) das Bild mit der Auflösung 2560x1600 angezeigt.

stoxx 16. Apr 2015 19:30

AW: [firemonkey] - Pixeldichte erhöhen
 
Ich weiß gerade nicht mehr, wie ich es erklären soll.

Natürlich wählt Firemonkey das entsprechende Bild mit der dazu passenden Skalierung aus.
Es stellt es aber NICHT SO HOCHAUFLÖSEND DAR. sondern nämlich nur mit 160 ppi.
Dein Bildschirm hat laut Internetangaben 299 ppi.

Zitat:

Zitat von Sir Rufo (Beitrag 1298066)
Wie groß machst du denn das Formular zur Entwurfszeit?

Sag jetzt bitte nicht "So groß wie die physikalische Dimension des Ziel-Device."

doch, zum Test sollst Du das ja sogar so machen.


Wenn ich es schaffe, mach ich morgen nochmal ein Beispiel Bild und mache DANN ein Screenshot mit dem Gerät.
Dann vergrößern wir das in einem Bildbearbeitungsprogramm.
Dann sollte es verständlicher sein.

Oder geb Dir doch endlich mal TImage.width aus !!
Das ist EIN Button klick.

stoxx 16. Apr 2015 19:37

AW: [firemonkey] - Pixeldichte erhöhen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Sir Rufo (Beitrag 1298066)
Die exakte Dimension habe ich vorher noch als Text in das Bild gelegt. Und siehe da, obwohl die Form und die Image-Komponente nur eine Größe von 1280x800 haben wird mir (gestochen scharf) das Bild mit der Auflösung 2560x1600 angezeigt.



.. und siehe da, Dein 2560x1600 Bild hat nur 1280 x 800 Bildpunkte !!!
(Jetzt verstanden) ?

Sir Rufo 16. Apr 2015 19:39

AW: [firemonkey] - Pixeldichte erhöhen
 
Vielleicht muss ich es größer und fetter schreiben:

Die TImage-Komponente hat die Größe 1280x800, was aber zu erwarten ist, da ich hier die logischen Werte bekomme, da FMX mit den logischen Werten arbeitet :roll:

Sir Rufo 16. Apr 2015 19:43

AW: [firemonkey] - Pixeldichte erhöhen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von stoxx (Beitrag 1298072)
Zitat:

Zitat von Sir Rufo (Beitrag 1298066)
Die exakte Dimension habe ich vorher noch als Text in das Bild gelegt. Und siehe da, obwohl die Form und die Image-Komponente nur eine Größe von 1280x800 haben wird mir (gestochen scharf) das Bild mit der Auflösung 2560x1600 angezeigt.



.. und siehe da, Dein 2560x1600 Bild hat nur 1280 x 800 Bildpunkte !!!
(Jetzt verstanden) ?

Nein hat es nicht ... das war die Foren-Software (hatte mich schon gewundert, warum das Bild so klein von der Datengröße war).

Im Anhang die Original-Bilder als ZIP

Sir Rufo 16. Apr 2015 20:30

AW: [firemonkey] - Pixeldichte erhöhen
 
Liste der Anhänge anzeigen (Anzahl: 4)
Hier haben wir nun 2 Bilder in der Auflösung
400x400
Anhang 42961
und 800x800
Anhang 42962

Auf eine Form lege ich nun 2x
Delphi-Quellcode:
TImage
mit 400x400!
Mit dem MultiResBitmap-Editor füge ich bei dem Image1 nur das 400x400 Bild (Scale 1.0) ein.
Image2 bekommt das 400x400 Bild (Scale 1.0) sowie das 800x800 Bild (Scale 2.0).

Und das kommt dann dabei heraus (Screenshot als zip)
Anhang 42963

Darlo 16. Apr 2015 20:32

AW: [firemonkey] - Pixeldichte erhöhen
 
Wie kommst Du denn auf die 160 ppi?

Mavarik 18. Apr 2015 17:04

AW: [firemonkey] - Pixeldichte erhöhen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1298074)
Vielleicht muss ich es größer und fetter schreiben:

Die TImage-Komponente hat die Größe 1280x800, was aber zu erwarten ist, da ich hier die logischen Werte bekomme, da FMX mit den logischen Werten arbeitet :roll:

Du verdienst mal wieder ein Fleißkärtchen...
Ich habe aufgegeben es Ihm zu erklären...

Sir Rufo 20. Apr 2015 09:40

AW: [firemonkey] - Pixeldichte erhöhen
 
Zitat:

Zitat von stoxx (Beitrag 1298069)
Wenn ich es schaffe, mach ich morgen nochmal ein Beispiel Bild und mache DANN ein Screenshot mit dem Gerät.
Dann vergrößern wir das in einem Bildbearbeitungsprogramm.
Dann sollte es verständlicher sein.

Gibt es den Screenshot noch?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 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