Hallo zusammen,
ich benötige die Skalierung des Bildschirms in Windows.
Dazu lese ich den Wert LogPixels unter HKEY_CURRENT_USER\Control Panel\Desktop aus.
Wenn ich den Wert in den Bildschirmeinstellungen ändere dann ändert sich aber der Wert nicht.
Ist das die falsche Stelle?
Ich weiß es gibt noch andere Methoden um die Skalierung zu erhalten. Die Anwendung ist jedoch alt und basiert auf einer 2er Dot net Version.
Danke und Grüße
Grundregel der Windows Registry: die Windows Registry stellt keinen Live-Zustand dar, weder vom System selbst noch von Applikationen.
Willst Du Live-Werte musst Du immer über die Windows API gehen.
In diesem Fall vielleicht GetScaleFactorForMonitor function (shellscalingapi.h) - Win32 apps
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo,
danke für die Antwort.
Ok.
Gibt es denn eine Möglichkeit auf einer Gui Form zu prüfen, ob das Element noch im sichtbaren Bereiches des Users ist, oder ob das Element samt Form über z.B. den rechten Rand des Bildschirms hinausgeht.
Weist du was ich meine?
Grüße
Das kannst du mit Rectangle.Contains(Rectangle) überprüfen (s.a. das Beispiel dort, nur statt rectangle1
dann DesktopBounds der Form benutzen).
Evtl. mußt du noch die Client-Koordinaten in Screen-Koordinaten umrechnen, falls du explizit ein Unterelement der Form überprüfen willst: PointToScreen.