2014-05-01 7 views
5

Ich habe eine Winforms-Anwendung (in Visual Studio 2010), die ein Report Viewer-Steuerelement enthält, das einen A4-Bericht in der Vorschau anzeigt und druckt.Report Viewer - Skalierungsproblem mit System-DPI-Änderung

Ein Benutzer hat seine Windows-Schriftgröße auf 150% festgelegt (d. H. Eine System-DPI-Änderung). Wenn er den Bericht ausführt, wird er in der Vorschau des Berichtsviewer und im gedruckten Bericht auf 2/3 verkleinert.

Die AutoScaleMode-Eigenschaft des Formulars, das den Berichts-Viewer enthält, wird auf "Schriftart" festgelegt, obwohl der Bericht den Bericht nicht zu beeinflussen scheint, wenn ich dies ändere.

Dies ist kein Font (fehlende/Skalierung) Problem, da ich ein Beispielprogramm habe, um das Problem zu demonstrieren, das nichts als ein Rechteck enthält, das die ganze Seite einnimmt.

Es scheint, ich brauche eine Möglichkeit, im Bericht selbst anzugeben, dass es mit 96dpi gerendert werden soll, unabhängig von der System-dpi-Einstellung, kann aber nirgends sehen, dass ich dies angeben kann. Was vermisse ich?

Danke, David

+0

Der Bericht-Viewer ist eine Blackbox. Melden Sie DPI-Skalierungsfehler bei connect.microsoft.com, damit sie behoben werden können. –

+0

Gleiches Problem, aber in 2012. Druckvorschau und der gedruckte Bericht enthalten beide geschrumpfte Inhalte. Es ist wie eine Berechnung, um den erhöhten Bildschirm DPI zu kompensieren ist falsch gegangen. Hast du irgendeinen Weg gefunden, das zu beheben? – Gavin

+1

@Gavin - Nein, ich habe keine Lösung gefunden. Um das Problem zu umgehen, scheint die Lösung "Deaktivieren der Anzeigeskalierung bei hohen DPI-Einstellungen" in den Kompatibilitätseinstellungen für die EXE-Datei das Problem zu lösen (unter Windows 7). –

Antwort

3

lief ich in das gleiche Problem. WinForms ReportViewer ist bereits DPI-fähig und führt eine eigene Skalierung durch. Sie müssen dem System lediglich mitteilen, dass Ihre Anwendung DPI-fähig ist, damit das System nicht danach skaliert.

ein Manifest für Ihre Anwendung hinzufügen, wenn Sie nicht bereits haben, dann innerhalb des Tags, fügen Sie folgendes:

<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" > 
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> 
     <dpiAware>true</dpiAware> 
    </asmv3:windowsSettings> 
    </asmv3:application> 

Sie können auch eine API-Funktion SetProcessDPIAware verwenden, aber es wird empfohlen, gegen: http://msdn.microsoft.com/en-us/library/ms633543.aspx

+0

Ich hatte das gleiche Problem und das hat es behoben. – Daws

+0

Ich habe eine Win Forms 'ReportViewer' eingebettet in eine WPF-Anwendung mit dem' WindowsFormsHost'-Steuerelement. WPF-Anwendungen registrieren sich immer als DPI-aware, aber der 'ReportViewer' weist dieses Problem auf, daher hilft diese Lösung nicht. –

Verwandte Themen