Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Screenshot liefert seltsames Ergebnis (https://www.delphipraxis.net/214645-screenshot-liefert-seltsames-ergebnis.html)

DelphiUser123 14. Feb 2024 22:13

Screenshot liefert seltsames Ergebnis
 
Ich hatte ein altes Programm aus dem Jahr 2015. Durch Betätigung eines Buttons wird ein Screenshot erstellt und als Hintergrundbild festgelegt. Das dabei entstehende Bild wird jedoch geschnitten abgespeichert und geschnitten vergrößert auf dem Desktop dargestellt.
Mache ich ein neues Programm mit demselben Befehlssatz, habe ich dieses Geschnitten Problem nicht. Ich habe übrigens probiert, das Bild explizit auf Bildschirmgröße zu setzen. Wo ist hier bei meinem alten Programm der Wurm drin? Denn früher gab es diesen Fehler nicht...

Hier findet man den von mir benutzten Code:
https://swissdelphicenter.ch/de/showcode.php?id=259

Danke für Antworten.

Uwe Raabe 14. Feb 2024 23:24

AW: Screenshot liefert seltsames Ergebnis
 
Hast du eine Bildschirmskalierung aktiv und ist das neue Programm mit DPI Support erstellt, aber das alte vermutlich nicht?

DelphiUser123 15. Feb 2024 14:50

AW: Screenshot liefert seltsames Ergebnis
 
Hallo,
ich habe festgestellt, dass die Funktionen Screen.width und Screen.height sich im alten und neuen Programm unterscheiden. Im alten: 2560/ 1440, im neuen dagegen (wo alles korrekt funktioniert): 3840 / 2160.
Wie kann ich die alten Werte überschreiben bzw. aktualisieren?
@Uwe Raabe: Leider kann ich mit dem Begriff "DPI Support" nichts anfangen.

gubbe 15. Feb 2024 15:54

AW: Screenshot liefert seltsames Ergebnis
 
In neueren Delphi-Version gibt es in den Projektoptionen unter Anwendung - Manifest die Option "DPI-Unterstützung". Diese Einstellung wird in Deine Exe-Datei eingebunden und Windows kann feststellen, ob das Programm mit hochauflösenden Monitoren umgehen kann.
In älteren Version gibt es die Einstellung nicht und Windows skaliert das Programm automatisch, vergrößert also die Fenster-Darstellung, da man sonst auf einen hochauflösenden Monitor kaum noch etwas lesen könnte. Das entspricht der Einstellung "GDI-Skalierung" in neueren Versionen. Man sieht dies meist an den pixelig aussehenden Schriften und Grafiken erkennen, die ja durch die Vergrößerung keine höhere Auflösung bekommen.

Das kann die Unterschiede in den Rückgabe-Werte von Screen.width und Screen.height erklären. Windows teilt eine virtuelle Bildschirmauflösung mit, die zu der vorgenommenen Skalierung des Fensters passt.

Lässt sich das Programm nicht mit einer neueren Delphi-Version umsetzen? Ansonsten müsste man versuchen, die tatsächliche Bildschirmgröße zu übermitteln oder die Windows-Skalierung über eine Manifest-Datei auszuschalten. Dann ist die Frage, ob die Programmoberfläche noch lesbar ist.

DelphiUser123 16. Feb 2024 21:52

AW: Screenshot liefert seltsames Ergebnis
 
Zitat:

In neueren Delphi-Version gibt es in den Projektoptionen unter Anwendung - Manifest die Option "DPI-Unterstützung".
Danke, das war der springende Punkt.


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