2016-06-22 10 views
1

Gibt es eine Möglichkeit, den Inhalt eines WPF-Steuerelements ohne Verwendung von PrintDialog zu drucken? Ich möchte PrintDialog vermeiden, weil die Eigenschaft PrinterSettings.PrintToFile ignoriert wird, es sei denn, der Benutzer überprüft sie im Dialogfeld. Ich muss auf einen "FILE:" -Port drucken, ohne einen Druckdialog anzuzeigen oder den Benutzer aufzufordern, einen Dateinamen anzugeben.Wie kann der Inhalt eines WPF-Steuerelements ohne Verwendung eines PrintDialogs gedruckt werden?

Ich habe in PrintDocument nachgesehen, das über die stumme PrintToFile-Funktion verfügt, aber ich konnte keinen Weg finden, den Inhalt meines WPF-Steuerelements auf das Dokument zu zeichnen.

+0

https://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument(v=vs.110).aspx – Paparazzi

Antwort

2

Wenn das Dateiformat spielt keine Rolle können Sie ein Bild von dem WPF-Steuerelement erzeugen, die Sie dann in eine Datei speichern können:

private static RenderTargetBitmap ConvertToBitmap(UIElement uiElement, double resolution) 
    { 
     dynamic scale = resolution/96.0; 
     uiElement.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity)); 
     dynamic sz = uiElement.DesiredSize; 
     dynamic rect = new Rect(sz); 
     uiElement.Arrange(rect); 
     dynamic bmp = new RenderTargetBitmap(Convert.ToInt32(scale * (rect.Width)), Convert.ToInt32(scale * (rect.Height)), scale * 96, scale * 96, PixelFormats.Default); 
     bmp.Render(uiElement); 
     return bmp; 
    } 

Wenn Sie aber nach etwas wie eine Postscript-Ausgabe oder eine Textdatei ausgegeben dann wird das nicht passen.

+0

Danke, ich endete damit, und dann Zeichnen der Bitmap zu die PrintDocument-Grafiken im PrintPage-Handler. Hat super funktioniert. – Yuyo

Verwandte Themen