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); } }