Ich arbeite mit einer WPF-Anwendung, die das Webbrowser-Steuerelement verwendet, und ich habe Probleme mit der Skalierung mit hohem DPI.
Es sieht so aus, als ob das Webbrowser-Steuerelement die DPI-Einstellungen des Systems nicht korrekt berücksichtigt, während der Rest der WPF-Anwendung die Benutzeroberfläche ordnungsgemäß skaliert. Dies bedeutet, dass auf höheren Ebenen die WPF-Oberfläche größer wird, während der Webbrowser-Inhalt auf der ursprünglichen, jetzt kleiner aussehenden Größe bleibt.
Hier sehen Sie ein Beispiel für Screenshots von einer WPF-App, die zwei Webbrowser-Steuerelemente verwendet.
100% Skalierung:
150% Skalierung:
Beachten Sie, dass die Skalierung des Webbrowsers im zweiten Bild wesentlich kleiner ist als im ersten Bild relativ zum Hauptformularinhalt (Symbolleiste / Menü / Statusleiste).
Gibt es eine Möglichkeit, das Webbrowser-Steuerelement zu zwingen, die von der Anwendung übernommenen Einstellungen für den hohen DPI richtig zu verwenden?
Dieser MSDN-Link: Adressierung von DPI-Problemen
zeigt einen sehr niedrigen Ansatz (am unteren Ende von doc), der benutzerdefinierte Webbrowser-COM-Schnittstellen implementiert, aber ich frage mich, ob es eine sauberere Möglichkeit gibt, dies zu beheben.
Hier ist der Code einer Dienstprogrammklasse, mit der Sie das WebBrowser-Kontextmenü von WPF deaktivieren können. Es erlaubt Ihnen auch, Skriptfehler zu unterdrücken ( WPF WebBrowser-Steuerelement - wie zu unterdrücken Skriptfehler ?) und ändern Sie IE DOCHOSTUIFLAG .
Anwendungsbeispiel:
%Vor%Hilfscode:
%Vor% Ich habe gefunden, was ich denke, ist der beste Weg, um die erforderliche Funktionalität zu erreichen (vorausgesetzt, dass Sie sowieso FEATURE_BROWSER_EMULATION
in der Registrierung angeben müssen, um die neueste IE-Version zu verwenden) .
Sie müssen lediglich einen neuen Schlüssel in HKCU\Software\Microsoft\Internet Explorer\Main\FeatureControl
named FEATURE_96DPI_PIXEL
erstellen und dort Ihren ausführbaren Eintrag vom Typ DWORD (32-bit)
hinzufügen, mit der Anwendung exe als Schlüsselname und dem Wert 1
.
Überprüfen Sie die Einstellung beim Start der Anwendung, bevor Sie die WebBrowser-Komponente tatsächlich instanziieren, und Sie sollten in Ordnung sein.
Originaler Beitrag (mit anderen möglichen Funktionen): Ссылка
Tags und Links wpf c# webbrowser-control dpi