Example #1
0
		void PrintLageplan (Window LagePlanWindow, bool WithProjektDescriptenOrWithout)
			{
			PrintDialog PrtDialog = new PrintDialog ();
			PrtDialog.PrintQueue = LocalPrintServer.GetDefaultPrintQueue ();
			PrtDialog.PrintTicket = PrtDialog.PrintQueue.DefaultPrintTicket;
			PrtDialog.PrintTicket.PageOrientation = PageOrientation.Landscape;
			if (PrtDialog.ShowDialog ().GetValueOrDefault (false))
				{
				//get selected printer capabilities
				System.Printing.PrintCapabilities Capabilities = PrtDialog.PrintQueue.GetPrintCapabilities (PrtDialog.PrintTicket);
				//get scale of the print wrt to screen of WPF visual
				double scale = Math.Min (Capabilities.PageImageableArea.ExtentWidth / LagePlanWindow.ActualWidth,
								Capabilities.PageImageableArea.ExtentHeight / LagePlanWindow.ActualHeight);
				//Transform the Visual to scale
				LagePlanWindow.LayoutTransform = new ScaleTransform (scale, scale);
				//get the size of the printer page
				Size sz = new Size (Capabilities.PageImageableArea.ExtentWidth, Capabilities.PageImageableArea.ExtentHeight);
				//update the layout of the visual to the printer page size.
				LagePlanWindow.Measure (sz);
				LagePlanWindow.Arrange (new Rect (new Point (Capabilities.PageImageableArea.OriginWidth, Capabilities.PageImageableArea.OriginHeight), sz));
				//now print the visual to printer to fit on the one page.
				PrtDialog.PrintVisual (LagePlanWindow, LagePlanWindow.Title);
				PrintMapDescription (PrtDialog, LagePlanWindow.Tag as List<List<Object>>);
				}
			}