C# Skalierung UserControl-Inhalte in übereinstimmung mit Benutzer Dpi/Schriftgröße
Wie bekomme ich meine OwnerDrawn UserControl zu respektieren, die Benutzer dpi (96/120/xxx) und/oder Schriftgröße (normal, groß, extra groß)?
Einige Leute empfehlen, verwenden Sie die DpiX und DpiY Eigenschaften auf ein Graphics-Objekt, aber das scheint nicht zu etwas in meiner Kontrolle (d.h. Sie sind immer auf 96, unabhängig davon, welche schriftart,-Größe oder-dpi-ich wähle).
Gibt es eine ähnliche Frage hier auf StackOverflow, wo es nahelegt, verwenden Sie die Option "automatisch skalieren" Eigenschaften, aber die vorgeschlagenen Lösungen nicht wirklich etwas.
Gibt es keine Möglichkeit, dies zu tun, in .NET, außer für die Berufung auf WPF?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die AutoScaleMode-Eigenschaft des Benutzersteuerelements auf AutoScaleMode.Dpi, und nicht legen Sie die AutoScale-Eigenschaft auf true. Wenn Sie es tun, wird es einen reset der AutoScaleMode Keines zurück. Die AutoScale-Eigenschaft ist veraltet und wird nur für die Abwärtskompatibilität (siehe Wichtiger Hinweis in diesem MSDN-Artikel).
Auch in Windows Vista/7, wenn Sie nicht ausdrücklich angeben, dass Ihre Anwendung DPI-aware, Windows emuliert eine Standard-DPI-Umgebung, so dass Ihre Anwendung jedoch mit 96 DPI, dann skaliert die resultierende bitmap in der passenden Größe. Um das zu vermeiden, können Sie ändern Sie Ihre App-manifest zu informieren, Windows, dass Sie in der Tat DPI aware - siehe Mit manifest zu deklarieren DPI Bewusstsein Abschnitt in dieser Artikel.
Ich habe das gleiche problem, ich habe versucht, mit GetDC + GetDeviceCaps + ReleaseDC, außer mit Grafiken gearbeitet, atleast auf Vista32. Ich bin nicht erfahren mit den DPI noch, aber niemand hatte beantwortet und zumindest diese könnte hilfreich sein für andere.
Check-out Erstellen einer DPI-Aware-Anwendung. Diese erwähnen, warum es vielleicht immer wieder 96 unabhängig von der tatsächlichen DPI-Einstellung.
Zitat aus obigen link:
Beantwortet von: Über das DPI Problem
Beispiel-code umgeschrieben, mit mit-Anweisung (original source):