Berichts-Viewer - Skalierung der Ausgabe mit system DPI ändern
Ich habe eine Winforms-Anwendung (Visual Studio 2010) enthält ein Berichts-Viewer-Steuerelement, die Vorschau und druckt auf A4-Format-Bericht.
Ein Benutzer hat sein Windows-Schriftgröße auf 150% gestellt (d.h. auf einem system DPI ändern) und wenn er läuft den Bericht, es ist geschrumpft auf 2/3 Größe sowohl in der Berichts-Viewer-Vorschau und der gedruckten Bericht.
Den AutoScaleMode-Eigenschaft des Formulars mit dem Berichts-Viewer auf "Schriftart", obwohl es scheint nicht auf den Bericht, wenn ich dies ändern.
Dies ist nicht eine schriftart (fehlende/Skalierung) - Problem, da habe ich ein Beispiel-Programm, um das problem zu demonstrieren, das nichts enthält aber ein Rechteck, das nimmt die ganze Seite.
Es scheint, ich muss irgendeinen Weg geben, der Bericht selbst, dass es dargestellt werden soll bei 96dpi unabhängig von der system-dpi-Einstellung, kann Sie aber nicht finden Sie überall, wo ich dies angeben kann. Was bin ich?
Dank,
David
- Der report viewer ist eine black box. Bericht DPI-Skalierung bugs zu connect.microsoft.com so können Sie Sie fest.
- Gleiche Problem aber in 2012. Druckvorschau und dem gedruckten Bericht enthalten beide geschrumpft Inhalt. Es ist wie eine Berechnung zum Ausgleich für die erhöhte Bildschirm-DPI schief gegangen ist. Hast du eine Möglichkeit dieses Problem zu beheben?
- Nein, ich habe nicht eine Lösung finden. Als workaround hilft es, die Auswahl von "Disable display Skalierung auf hohe DPI-Einstellungen" in den Kompatibilitätseinstellungen der .exe-Datei scheint das problem zu lösen (dies ist unter Windows 7).
- Danke @davidl ich jetzt zumindest eine Lösung für Benutzer mit diesem Problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lief in das gleiche problem. WinForms ReportViewer ist bereits DPI bewusst und wird dies seine eigene Skalierung. Sie müssen nur sagen, das system, dass Ihre Anwendung DPI bewusst, so dass das system nicht versuchen, um es zu skalieren nach.
Ein manifest hinzufügen, um Ihre Anwendung, wenn Sie nicht bereits getan haben, dann in den tag, fügen Sie den folgenden:
Können Sie auch eine API-Funktion verwenden SetProcessDPIAware, aber es ist empfohlen gegen:
http://msdn.microsoft.com/en-us/library/ms633543.aspx
ReportViewer
eingebettet in eine WPF-Anwendung mithilfe derWindowsFormsHost
Kontrolle. WPF-Anwendungen registrieren sich selbst als DPI-aware, aber dieReportViewer
ist, auf dieses problem Verhalten, so dass diese Lösung nicht helfen.Als Kostenlose Antwort auf das, was @JoMan sagte (da kann ich keinen Kommentar zu seinem post) beachten Sie, dass Sie können auch manuell skalieren, bis die UI-Elemente in Ihre app relativ einfach. So lassen Sie Ihren Anwendung DPI aware (so dass Ihr system nicht verzerren die gedruckten Ergebnisse) als JOMan vorgeschlagen. Sie könnte so etwas wie dieses...
Ich bin sicher, dass viele Leute behaupten (zu Recht!) dass Sie in der Regel nicht wollen, um zu erkennen, DPI und manuell skalieren sich selbst, aber der Fehler mit der dpi-automatischer Skalierung entsprechend vermasseln gedruckt microsoft berichten ist noch ausstehenden 2018, so bietet dies eine einfache Arbeit um.