如何在完整窗口打印之前为其提供打印预览功能,这是我为打印整个窗口而实现的代码。
我的守则背后:
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");
}
}
答案 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
中以启用调整大小
结果
我选择了一个文本框,例如你可以在视觉笔刷中选择你选择的任何视觉效果,例如Visual="{Binding ElementName=panel}"