コード例 #1
0
ファイル: PrintForm.xaml.cs プロジェクト: marzlia/CXPortal
        public List <PageContent> PrintPage()
        {
            List <PageContent> Pages = new List <PageContent>();

            InitializePages();

            PrintDialog printDialog = new PrintDialog();

            int ViewNumber = 1;

            foreach (RenderedImage renderedImage in m_RenderedImages)
            {
                PageContent pageContent = new PageContent();
                FixedPage   fixedPage   = new FixedPage();

                bool rotate = false;

                double width  = printDialog.PrintableAreaWidth;
                double height = printDialog.PrintableAreaHeight;

                if (renderedImage.Image.Width > renderedImage.Image.Height)
                {
                    width  = printDialog.PrintableAreaHeight;
                    height = printDialog.PrintableAreaWidth;
                    rotate = true;
                }

                PrintPreview printPreview = new PrintPreview(m_CaseObject, width, height, ViewNumber);
                printPreview.SetImage(renderedImage.Image);

                fixedPage.Children.Add((UIElement)printPreview);

                double pageWidth  = printDialog.PrintableAreaWidth;
                double pageHeight = printDialog.PrintableAreaHeight;

                if (rotate)
                {
                    TranslateTransform tt = new TranslateTransform((pageWidth - pageHeight) / 2, (pageHeight - pageWidth) / 2);
                    printPreview.RenderTransform = tt;

                    RotateTransform rotateTransform = new RotateTransform(-90D, pageWidth / 2D, pageHeight / 2D);
                    fixedPage.RenderTransform = rotateTransform;
                }

                ((IAddChild)pageContent).AddChild(fixedPage);

                Pages.Add(pageContent);

                if (renderedImage.IsAnnotationsShown && renderedImage.AnnotationComments.Count > 0)
                {
                    PageContent annotationPageContent = new PageContent();
                    FixedPage   annotationFixedPage   = new FixedPage();

                    //UserControl annotationPage = new UserControl();
                    AnnotCommentPrintPreview annotationPage;

                    if (m_RenderedImages.Count > 0)
                    {
                        annotationPage = new AnnotCommentPrintPreview(m_CaseObject, ViewNumber);
                    }
                    else
                    {
                        annotationPage = new AnnotCommentPrintPreview(m_CaseObject);
                    }

                    //annotationPage.MaxWidth = pageWidth - 48;
                    //annotationPage.MaxHeight = pageHeight - 48;

                    //WrapPanel annotationPanel = new WrapPanel();
                    //annotationPage.Content = annotationPanel;

                    FixedPage.SetLeft(annotationPage, 48);
                    FixedPage.SetTop(annotationPage, 48);

                    annotationPage.annotationPanel.Width  = pageWidth;
                    annotationPage.annotationPanel.Height = pageHeight;

                    annotationFixedPage.Children.Add((UIElement)annotationPage);

                    char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };

                    int count = 0;

                    foreach (string comment in renderedImage.AnnotationComments)
                    {
                        AnnotationPage ap    = new AnnotationPage();
                        string         index = string.Empty;

                        int div = (count / 26) - 1;
                        int rem = count % 26;

                        if (div >= 0)
                        {
                            index += letters[div];
                        }

                        index += letters[rem];

                        ap.AnnotationIndex.Text = index;

                        ap.AnnotationComment.Text = comment;

                        annotationPage.annotationPanel.Children.Add(ap);

                        count++;
                    }

                    ((IAddChild)annotationPageContent).AddChild(annotationFixedPage);

                    Pages.Add(annotationPageContent);
                }

                ViewNumber++;
            }

            return(Pages);
        }
コード例 #2
0
ファイル: PrintForm.xaml.cs プロジェクト: BdGL3/CXPortal
        public List<PageContent> PrintPage()
        {
            List<PageContent> Pages = new List<PageContent>();

            InitializePages();

            PrintDialog printDialog = new PrintDialog();
   
            int ViewNumber = 1;

            foreach (RenderedImage renderedImage in m_RenderedImages)
            {
                PageContent pageContent = new PageContent();
                FixedPage fixedPage = new FixedPage();

	            bool rotate = false;

	            double width = printDialog.PrintableAreaWidth;
	            double height = printDialog.PrintableAreaHeight;

                if (renderedImage.Image.Width > renderedImage.Image.Height)
	            {
	                width = printDialog.PrintableAreaHeight;
	                height = printDialog.PrintableAreaWidth;
	                rotate = true;
	            }

	            PrintPreview printPreview = new PrintPreview(m_CaseObject, width, height, ViewNumber);
                printPreview.SetImage(renderedImage.Image);

	            fixedPage.Children.Add((UIElement)printPreview);

                double pageWidth = printDialog.PrintableAreaWidth;
                double pageHeight = printDialog.PrintableAreaHeight;

	            if (rotate)
	            {
                    TranslateTransform tt = new TranslateTransform((pageWidth - pageHeight) / 2, (pageHeight - pageWidth) / 2);
                    printPreview.RenderTransform = tt;

                    RotateTransform rotateTransform = new RotateTransform(-90D, pageWidth / 2D, pageHeight / 2D);
                    fixedPage.RenderTransform = rotateTransform;
	            }

                ((IAddChild)pageContent).AddChild(fixedPage);

                Pages.Add(pageContent);

                if (renderedImage.IsAnnotationsShown && renderedImage.AnnotationComments.Count > 0)
                {
                    PageContent annotationPageContent = new PageContent();
                    FixedPage annotationFixedPage = new FixedPage();

                    //UserControl annotationPage = new UserControl();
                    AnnotCommentPrintPreview annotationPage;

                    if (m_RenderedImages.Count > 0)
                        annotationPage = new AnnotCommentPrintPreview(m_CaseObject, ViewNumber);
                    else
                        annotationPage = new AnnotCommentPrintPreview(m_CaseObject);

                    //annotationPage.MaxWidth = pageWidth - 48;
                    //annotationPage.MaxHeight = pageHeight - 48;                

                    //WrapPanel annotationPanel = new WrapPanel();
                    //annotationPage.Content = annotationPanel;

                    FixedPage.SetLeft(annotationPage, 48);
                    FixedPage.SetTop(annotationPage, 48);

                    annotationPage.annotationPanel.Width = pageWidth;
                    annotationPage.annotationPanel.Height = pageHeight;

                    annotationFixedPage.Children.Add((UIElement)annotationPage);

                    char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };

                    int count = 0;

                    foreach (string comment in renderedImage.AnnotationComments)
                    {
                        AnnotationPage ap = new AnnotationPage();
                        string index = string.Empty;

                        int div = (count / 26) - 1;
                        int rem = count % 26;

                        if (div >= 0)
                        {
                            index += letters[div];
                        }

                        index += letters[rem];

                        ap.AnnotationIndex.Text = index;

                        ap.AnnotationComment.Text = comment;

                        annotationPage.annotationPanel.Children.Add(ap);

                        count++;
                    }

                    ((IAddChild)annotationPageContent).AddChild(annotationFixedPage);

                    Pages.Add(annotationPageContent);
                }

                ViewNumber++;
            }

            return Pages;
        }