bool createDocument(double dpiX = 96, double dpiY = 96) { FixedDocument fixedDocument; PageContent pageContent; FixedPage fixedPage; double renderWidth = Util.convertToDpi(printWidth, dpiX); double renderHeight = Util.convertToDpi(printHeight, dpiY); UIElement[] pages = contentInterface.getPrintPages(renderWidth, renderHeight); double scaleX = 1 / Util.convertToDpi(1, dpiX); double scaleY = 1 / Util.convertToDpi(1, dpiY); if (pages.Length > 0) { fixedDocument = new FixedDocument(); fixedDocument.PrintTicket = printDialog.PrintTicket; foreach (UIElement page in pages) { fixedPage = new FixedPage(); fixedPage.PrintTicket = printDialog.PrintTicket; fixedPage.Width = printWidth; fixedPage.Height = printHeight; if (scaleX != 1 || scaleY != 1) { page.RenderTransform = new ScaleTransform(scaleX, scaleY); FixedPage.SetLeft(page, printPosX); FixedPage.SetTop(page, printPosY); } fixedPage.Children.Add(page); pageContent = new PageContent(); pageContent.Child = fixedPage; fixedDocument.Pages.Add(pageContent); } document = fixedDocument; documentViewer.UpdateLayout(); // this forces layout recalc / redraw of chrompage (including chromview) } return(pages.Length > 0); }
public void exportImage() { if (currentView != ViewType.Setup) { FileDialog dialog = new SaveFileDialog(); double width, height, dpi; dialog.Filter = "PNG files (*.png)|*.png|All files (*.*)|*.*"; if (dialog.ShowDialog() == DialogResult.OK) { dpi = optionParams.exportDpi; width = Util.convertToDpi(printing.getWidth(), dpi); height = Util.convertToDpi(printing.getHeight(), dpi); ChromView chromView = new ChromView(Transparency.Partial); chromView.visOutSet = view.getChromVisOutSet(); chromView.Arrange(new Rect(new Size(width, height))); chromView.UpdateLayout(); Util.saveBitmapImage(Util.visualToBitmap(chromView, width, height), dialog.FileName); } Util.gcCollect(); } }