代码之家  ›  专栏  ›  技术社区  ›  grantnz

如何使用WPF流文档或FixedDocument从屏幕控件组合可打印页面?

  •  1
  • grantnz  · 技术社区  · 14 年前

    我正在尝试打印一些WPF控件(数据报、图表等),这些控件在我的应用程序的屏幕上,但需要重新安排和补充其他文本等。

    使用WPF流程文档或FixedDocument似乎是撰写和打印文档的明显方式,但我正在努力实现这一点。

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

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   grantnz    14 年前

    发现如果在打印前呈现流程文档(例如,如果托管在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>
    

    反恐精英

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