Mega Code Archive

 
Categories / C# / WPF
 

Print Visual(Canvas)

<Window x:Class="Printing.PrintVisual"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     Title="PrintVisual" Height="259" Width="282">     <StackPanel>       <Canvas Name="canvas">         <TextBlock Canvas.Top="50" Canvas.Left="20" FontSize="25" FontWeight="Bold">Hello There</TextBlock>         <Path Fill="Yellow" Stroke="Blue" Margin="5" Canvas.Top="10" Canvas.Left="10" >           <Path.Data>             <GeometryGroup>               <RectangleGeometry Rect="0 0 100 100"></RectangleGeometry>               <EllipseGeometry Center="50 50" RadiusX="35" RadiusY="25"></EllipseGeometry>             </GeometryGroup>           </Path.Data>         </Path>       </Canvas>       <Button Grid.Row="3" Click="cmdPrint_Click">Print</Button>     </StackPanel> </Window> //File:Window.xaml.cs using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace Printing {     public partial class PrintVisual : System.Windows.Window     {         public PrintVisual()         {             InitializeComponent();         }         private void cmdPrint_Click(object sender, RoutedEventArgs e)         {             PrintDialog printDialog = new PrintDialog();                          if (printDialog.ShowDialog() == true)             {                              double zoom = 30;                                  canvas.Background = Brushes.LightSteelBlue;                                                                          canvas.LayoutTransform = new ScaleTransform(zoom / 100, zoom / 100);                 Size pageSize = new Size(printDialog.PrintableAreaWidth - 20, printDialog.PrintableAreaHeight - 20);                                      canvas.Measure(pageSize);                 canvas.Arrange(new Rect(10, 10, pageSize.Width, pageSize.Height));                 printDialog.PrintVisual(canvas, "A Scaled Drawing");                 canvas.Background = null;                 canvas.LayoutTransform = null;                                     }         }     } }