Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Wie DPI-Wert des Monitors ändern? (https://www.delphipraxis.net/209910-wie-dpi-wert-des-monitors-aendern.html)

Carsten Hölscher 6. Feb 2022 17:29

Wie DPI-Wert des Monitors ändern?
 
Ich hab das Problem, dass bei Bildschirmskalierungswerten <> 100% vermutlich durch die Skalierung die Performance meiner DirectX-Anwendung leidet. Nun kann man auf einem 4k-Monitor nicht immer sinnvoll arbeiten, wenn man 100% eingestellt hat.
Ich würde daher gerne den Monitor auf 100% stellen, wenn die Grafik startet und danach wieder auf den ursprünglichen Wert.
Es scheint aber nicht so einfach zu sein, hier gibt's schon etwas Diskussion dazu in C#:
https://stackoverflow.com/questions/...16586#62916586

Hat das jemand schonmal in Delphi hinbekommen?

Carsten

Redeemer 6. Feb 2022 18:58

AW: Wie DPI-Wert des Monitors ändern?
 
Unter Windows 7 gab es eine Option in der Kompatibilitätseinstellungen des Programms, wo man das einstellen konnte.
Unter Windows 11 hab ich die nicht wiedergefunden, wurde die entfernt?

Carsten Hölscher 6. Feb 2022 19:29

AW: Wie DPI-Wert des Monitors ändern?
 
Ich will nicht mein ganzes Programm in 100% laufen lassen. Das hat auch diverse Fenster usw. die man normal benutzen können muss. Nur während die 3D-Grafik läuft, soll es umschalten.

Carsten

Uwe Raabe 6. Feb 2022 21:00

AW: Wie DPI-Wert des Monitors ändern?
 
Schau mal hier: Delphi VCL Applications with mixed DPI

Carsten Hölscher 6. Feb 2022 21:35

AW: Wie DPI-Wert des Monitors ändern?
 
Ich glaube das hilft hier nicht. Wenn ich es richtig sehe, bleibt dort ja der Monitor unangetastet.
Die Probleme hab ich aberm sobald der Monitor nicht auf 100% läuft. (also zuindest war das mit meinem Delphi 7-Programm so - vielleicht sollte ich es dann erstmal nach der Portierung auf Delphi 11 testen)

Carsten

Der schöne Günther 6. Feb 2022 21:42

AW: Wie DPI-Wert des Monitors ändern?
 
Vielleicht rede ich dummes Zeug, ich habe schon ewig nichts mehr mit DirectX gemacht. Dass das Bitmap-Skalieren Zeit braucht, ist irgendwo klar.

Was macht dein DirectX-Kram?
  1. Vollbild-Anwendung?
  2. Ein eigenes Top-Level Fenster?
  3. Du malst auf ein Bitmap und fügst das irgendwo in deiner VCL-Anwendung ein?

Ein Fenster hat eine DPI-awareness. Falls du, aus welchem Grund auch immer, deine Anwendung nicht updaten willst wäre evtl. die Möglichkeit mit SetThreadDpiAwareness? Die Windows-Displayskalierung des gesamten Systems über irgendwelche Hintertüren-Hacks zwischenzeitlich auf links zu drehen darf keine erst gemeinter Lösungsansatz sein!

Carsten Hölscher 6. Feb 2022 21:56

AW: Wie DPI-Wert des Monitors ändern?
 
Ich zeichne "ganz normal" mit DirectX-Mitteln eine 3D-Landschaft auf einen Backbuffer und dieser wird dann in ein TForm ohne Rahmen geblittet, so dass ein Vollbild entsteht. Der "echte" DirectX-Vollbildmodus kann atürlich auch den Monitor nach Wunsch einstellen, aber der hat auch diverse Nachteile, weshalb ich lieber den normalen Windows-Modus mit einem rahmenlosen Vollbild-Fenster nehme.
Die Beobachtung ist nun, dass das unrunder läuft, wenn die Skalierung des Monitors nicht auf 100% läuft.
Meine Anwendung weiß davon ja aber gar nichts bzw. macht nichts anders, so dass ich vermute, dass das Effekte in Windows sind, die bei z.B. bei 150% anfallen, bei 100% aber nicht.

Carsten

Carsten Hölscher 6. Feb 2022 22:01

AW: Wie DPI-Wert des Monitors ändern?
 
Zitat:

Die Windows-Displayskalierung des gesamten Systems über irgendwelche Hintertüren-Hacks zwischenzeitlich auf links zu drehen darf keine erst gemeinter Lösungsansatz sein!
Doch das wäre hier absolut ok, da das ganze System nur für den Betrieb meiner Software da steht und man die Einstellung bisher manuell machen muss und vermutlich Anwender das gerne verstellen und dann keine optimale Performance haben. Trotzdem wär das Verhalten natürlich in den Programm-Einstellungen steuerbar.

Carsten

TurboMagic 7. Feb 2022 20:57

AW: Wie DPI-Wert des Monitors ändern?
 
Hast du Mal das mit diesem API Aufruf getestet?
Wenn das in dem Fenster ein eigener Threads ist oder sein kann
könnte das doch eine Lösung sein...

Carsten Hölscher 8. Feb 2022 09:37

AW: Wie DPI-Wert des Monitors ändern?
 
Welchen Api-Aufruf meinst Du?

Carsten


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 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-2025 by Thomas Breitkreuz