如何使用WPF FlowDocument或FixedDocument从屏幕控件组成可打印页面?

时间:2010-10-04 08:55:34

标签: c# wpf printing flowdocument fixeddocument

我正在尝试打印一些WPF控件(数据网格,图表等),这些控件在我的应用程序中显示在屏幕上,但需要重新排列并补充其他文本等。

使用WPF FlowDocument或FixedDocument似乎是撰写和打印文档的明显方法,但我很难实现这一目标。

我尝试从控件创建一个VisualBrush并将其用作矩形上的填充而没有成功(根本不显示矩形)。

有没有人使用FlowDocument / FixedDocument来执行此操作和/或有任何示例代码显示它是如何实现的?

1 个答案:

答案 0 :(得分:0)

如果在打印之前渲染FlowDocument(例如,如果托管在FlowDocumentReader中),则发现它可以正常工作。

XAML

    xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"

        <d3:ChartPlotter x:Name="plotter">
                <d3:Header TextBlock.FontSize="20">
                    Very simple chart
                </d3:Header>
            </d3:ChartPlotter>

            <FlowDocumentReader>
            <FlowDocument>
                <Paragraph>
                    <Run>Graph Header</Run>                        
                </Paragraph>
                <BlockUIContainer>
                    <Rectangle x:Name="GraphRectangle" Height="300"/>                            
                </BlockUIContainer>
            </FlowDocument>
        </FlowDocumentReader>

CS

    public MainWindow()
    {
        InitializeComponent();
        GraphRectangle.Fill = new VisualBrush(plotter);
    }