AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie DPI-Wert des Monitors ändern?

Ein Thema von Carsten Hölscher · begonnen am 6. Feb 2022 · letzter Beitrag vom 8. Feb 2022
Antwort Antwort
Carsten Hölscher

Registriert seit: 29. Jul 2008
77 Beiträge
 
Delphi 11 Alexandria
 
#1

Wie DPI-Wert des Monitors ändern?

  Alt 6. Feb 2022, 18:29
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
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.081 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Wie DPI-Wert des Monitors ändern?

  Alt 6. Feb 2022, 19:58
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?
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Carsten Hölscher

Registriert seit: 29. Jul 2008
77 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Wie DPI-Wert des Monitors ändern?

  Alt 6. Feb 2022, 20:29
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
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wie DPI-Wert des Monitors ändern?

  Alt 6. Feb 2022, 22:00
Schau mal hier: Delphi VCL Applications with mixed DPI
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Carsten Hölscher

Registriert seit: 29. Jul 2008
77 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Wie DPI-Wert des Monitors ändern?

  Alt 6. Feb 2022, 22:35
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
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Wie DPI-Wert des Monitors ändern?

  Alt 6. Feb 2022, 22:42
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!
  Mit Zitat antworten Zitat
Carsten Hölscher

Registriert seit: 29. Jul 2008
77 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Wie DPI-Wert des Monitors ändern?

  Alt 6. Feb 2022, 22:56
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
  Mit Zitat antworten Zitat
Carsten Hölscher

Registriert seit: 29. Jul 2008
77 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Wie DPI-Wert des Monitors ändern?

  Alt 6. Feb 2022, 23:01
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
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#9

AW: Wie DPI-Wert des Monitors ändern?

  Alt 7. Feb 2022, 21:57
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...
  Mit Zitat antworten Zitat
Carsten Hölscher

Registriert seit: 29. Jul 2008
77 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Wie DPI-Wert des Monitors ändern?

  Alt 8. Feb 2022, 10:37
Welchen Api-Aufruf meinst Du?

Carsten
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:15 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