Beispiel #1
0
        private async void btnRender_Click(object sender, RoutedEventArgs e)
        {
            // document parameters
            _doc.Clear();
            progressRing.IsActive = true;
            _doc.Landscape        = true;
            var sz = _doc.PageSize;
            var rc = new Rect(0, 0, sz.Width - _doc.MainSection.LeftMargin - _doc.MainSection.RightMargin, sz.Height - _doc.MainSection.TopMargin - _doc.MainSection.BottomMargin);

            // draw every UI elements inside the panel in word document.
            await _doc.DrawElement(panel, rc);

            // save document
            WordUtils.SetDocumentInfo(_doc, Strings.RenderUIDocumentTitle);
            WordUtils.Save(_doc);
            progressRing.IsActive = false;
        }
        void CreateDocumentVisualTree(C1WordDocument rtf, FrameworkElement targetElement)
        {
            // set up to render
            var font = new Font("Courier", 14);
            var img  = new WriteableBitmap(CreateBitmap(targetElement));

            // go render
            bool firstPage = true;

            foreach (Stretch stretch in new Stretch[] { Stretch.Fill, Stretch.None, Stretch.Uniform, Stretch.UniformToFill })
            {
                // add page break
                if (!firstPage)
                {
                    //rtf.NewPage();
                }
                firstPage = false;

                // set up to render
                var alignment = ContentAlignment.TopLeft;
                //var rc = WordUtils.Inflate(rtf.PageRectangle, -72, -72);
                var sz = rtf.PageSize;
                var rc = new Rect(72, 72, sz.Width - 144, sz.Height - 144);
                rc.Height /= 2;

                // render element as image
                rtf.DrawString("Element as Image, Stretch: " + stretch.ToString(), font, Colors.Black, rc);
                rc = WordUtils.Inflate(rc, -20, -20);
                //rtf.DrawImage(img, rc, alignment, stretch);
                rtf.DrawImage(img, rc);
                rtf.DrawRectangle(Colors.Green, rc);
                rc = WordUtils.Inflate(rc, +20, +20);
                rtf.DrawRectangle(Colors.Green, rc);

                // move to bottom of the page
                rc = WordUtils.Offset(rc, 0, rc.Height + 20);

                // render element
                rtf.DrawString("Element as VisualTree, Stretch: " + stretch.ToString(), font, Colors.Black, rc);
                rc = WordUtils.Inflate(rc, -20, -20);
                rtf.DrawElement(targetElement, rc, alignment, stretch);
                rtf.DrawRectangle(Colors.Green, rc);
                rc = WordUtils.Inflate(rc, +20, +20);
                rtf.DrawRectangle(Colors.Green, rc);
            }
        }