So drucken Sie mehrere WPF-Seiten in einem Dokument

Ich will ein Dokument erstellen mit mehreren Seiten und mit einem wpf-Fenster dargestellt auf jeder Seite.

Habe ich es geschafft, zu drucken einem Fenster mit PrintDialog und PrintVisual. Jedoch diese scheinen zu funktionieren nur mit einer einzigen Seite? Irgendwelche Ideen, wie kann ich erstellen ein Dokument mit mehreren Seiten und drucken Sie das komplett-set.

Kann ich einfügen, dass visual (nach code) und fügen Sie es als eine Seite in einem Dokument und drucken Sie es danach?

Ansatz wirklich schlecht? Gibt es som anderen Weg, um dieses problem zu lösen?

      Sub Print (Dim ele As FrameWorkElement)
            Dim margin As Double = 30
            Dim titlePadding As Double = 10

            Dim printDlg As PrintDialog = New PrintDialog()
            printDlg.PrintTicket.PageOrientation = PageOrientation.Landscape
            If (printDlg.ShowDialog() <> True) Then Return

            Dim formattedText As FormattedText = New FormattedText(Name, CultureInfo.GetCultureInfo("en-us"),
                                                            FlowDirection.LeftToRight, New Typeface("Verdana"), 25, Brushes.Black)

            formattedText.MaxTextWidth = printDlg.PrintableAreaWidth

            Dim scale As Double = Math.Min(printDlg.PrintableAreaWidth / (ele.ActualWidth + (Margin * 2)),
                                    (printDlg.PrintableAreaHeight - (formattedText.Height + titlePadding)) / (ele.ActualHeight + (Margin * 2)))

            Dim visual As DrawingVisual = New DrawingVisual()
            Using context As DrawingContext = visual.RenderOpen()

                Dim brush As VisualBrush = New VisualBrush(ele)
                context.DrawRectangle(brush, Nothing, New Rect(New Point(margin, margin + formattedText.Height + titlePadding),
                                                            New Size(ele.ActualWidth, ele.ActualHeight)))

                context.DrawText(formattedText, New Point(margin, margin))
            End Using
            visual.Transform = New ScaleTransform(scale, scale)
            printDlg.PrintVisual(visual, "")
     End Sub
InformationsquelleAutor picknick | 2012-04-13
Schreibe einen Kommentar