Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Physisches Bildraster eines Monitors erfahren?

  Alt 28. Aug 2018, 23:02
Vor allem bei neueren Windowsen kann für jeden Monitor einzeln die DPI/Zoom eingestellt werden
und seit Windows 10 geht es sogar dass die Fenster "optisch" gleich groß bleiben, selbst wenn sie zur Hälfte auf unterschiedlichen Monitoren liegen.

Und ältere Delphis haben noch nichts drin, um mit High-DPI umzugehen,
ABER...
* dort kümmert sich dann Windows um die Skalierung (hier bleibt für dich das Fenster gleich groß, aber Windows vergrößert/verkleinert "deine" Pixel)
* und in neuen Delphis kann/tut sich die VCL/FMX darum kümmern (malt mehr/weniger Pixel, anstatt die Pixel zu skalieren)


Wie schon der RAM in Virtual und Real getrennt ist und dazwischen ein Mapping existiert,
so gibt es das auch bei Displays Canvas. Aber die Meisten kennen das vor allem "nur" bei Druckern.
http://michael-puff.de/Programmierun...ts/Print.shtml
Oder eben die automatische Skalierung der "ganzen" Programmfenster anstatt deren Inhalt. (bei Programmen die sich nicht als HighDPI-komatibel ausgeben)




Das physikalische Raster bei LCD ist ja fest, steht auf der Verpackung und stimmt meistens mit der "maximalen" Auflösung überein.
(wobei viele Beamer gern mit FullHD werben ... im Eingang ... aber im Ausgang dann nichtmal HD bieten )

Vorteil ist hier auch, dass die Dimensionen bei LCD/OLED/... fest sind.
Bei Röhren konnt man das Bild nicht ganz bis zum "konkaven" Rand schieben, ohne die Ecken zu verlieren, weswegen dort das Bild nie die maximale Fläsche nutzen konnte,
und es dort mit den DPI auch praktisch unmöglich war, dass der PC diese automatisch erfahren konnte, weil es durch die Benutzer frei verschoben werden konnte und es sich über die Zeit auch wieder verschob.
Und natürlich auch noch der Overscan, also Pixel außerhalb des sichtbaren Bereichs, meist bei analogen Fenseh-Signalen auf digitale Displays.




Das physische Pixel-Raster alleine hat selten eine Aussagekraft:

Die physikalische Auflösung des Displays (wobei hier auch nochmal eine Skalierung im Display sein kann, wenn z.B. 800x600 auf einem 1920x1080 dargestellt werden)
die physische Auflösung der Grafikkarte (globale Skalierung im "Desktop" ... kennst aus den Monitoreinstellungen im Windows)
dann nochmal die Skalierung des Programms/Fensters
zusätzlich kannst du drinnen auch nochmal selber eine weitere Skalierungebene auf deinen Canvas legen
und ganz schlimm im FMX zu sehen, wo du verschachtelte Panels/Komponenten unterschiedlich Delphi-Referenz durchsuchenTControl.Scaleieren kannst (also nicht der Canvas skalliert, sondern das, was darauf gemalt wird)
$2B or not $2B
  Mit Zitat antworten Zitat