如何在WPF中提供打印预览,以获得完整的窗口?

时间:2014-07-04 06:43:21

标签: c# wpf print-preview

如何在完整窗口打印之前为其提供打印预览功能,这是我为打印整个窗口而实现的代码。

我的守则背后:

private void Canvas_Print_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            PrintDialog printdlg = new PrintDialog();
            MainWindow win = new MainWindow();
            this.Width = 350;
            this.Background = Brushes.White;
            panel.ScrollToTop();
            panel.ScrollToLeftEnd();
            win.Tag = this;
            if (printdlg.ShowDialog() == true)
            {
                printdlg.PrintVisual(panel.Content as Visual, "MyApplication");
            }
        }

1 个答案:

答案 0 :(得分:0)

以下是打印预览功能的示例

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="auto" />
    </Grid.RowDefinitions>
    <Viewbox>
        <Border BorderBrush="Gray"
                Background="White"
                BorderThickness="2"
                Margin=".2in">
            <Rectangle Width="8.5in"
                       Height="11in"
                       Margin=".2in">
                <Rectangle.Fill>
                    <VisualBrush Visual="{Binding ElementName=visualToPrint}"
                                 Stretch="Uniform" />
                </Rectangle.Fill>
            </Rectangle>
            <Border.Effect>
                <DropShadowEffect Opacity=".25" />
            </Border.Effect>
        </Border>
    </Viewbox>
    <TextBox Text="change this text"
             Grid.Row="1"
             x:Name="visualToPrint" />
</Grid>

我创建了一个纸张大小的矩形(假设为8.5&#34; 11&#34;)并将填充设置为VisualBrush,这将呈现我的视觉visualToPrint(面板在你的情况下) )。

还将其包含在边框中,以便将效果和整个页面整合到ViewBox中以启用调整大小

结果

result

我选择了一个文本框,例如你可以在视觉笔刷中选择你选择的任何视觉效果,例如Visual="{Binding ElementName=panel}"