PictureWrap.cs
C# VB
//// This code is part of Document Solutions for Word demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System;using System.IO;using GrapeCity.Documents.Word;using GrapeCity.Documents.Imaging;
namespace DsWordWeb.Demos{ // This sample adds a paragraph of text, splits it in the middle, // and inserts a picture into the split position. // This sequence is repeated several times with the same text and picture, // but with different picture wrapping styles and alignments. public class PictureWrap { public GcWordDocument CreateDocx() { GcWordDocument doc = new GcWordDocument(); doc.Styles.DefaultParagraphFormat.Alignment = ParagraphAlignment.Both;
// Load picture data: var picBytes = File.ReadAllBytes(Path.Combine("Resources", "Images", "road.jpg")); // Create a GcBitmap so that we can find out the native picture size: var image = new GcBitmap(picBytes); // Scale picture to a smallish size: var width = doc.Body.Sections.Last.PageSetup.ClientWidth / 6; var height = image.Height * (width / image.Width);
// The section: var sec = doc.Body.Sections.First; // The paragraphs collection: var pars = sec.GetRange().Paragraphs; // Generate a sample string (used in all sample paragraphs): var str = Util.LoremIpsumPar(10, 10, 10, 10); // Header: pars.Add("Different picture wrapping styles and alignments.", doc.Styles[BuiltInStyleId.Heading1]);
// Function to insert a sized picture into the middle of a paragraph: Func<string, Picture> addPicture = (caption_) => { pars.Add(caption_, doc.Styles[BuiltInStyleId.Heading2]); var par_ = pars.Add(str); var text_ = par_.GetRange().Texts.First.Split(str.Length / 2); var run_ = text_.ParentRun.Split(text_, InsertLocation.Before); run_ = run_.Previous; var pic_ = run_.GetRange().Pictures.Add(picBytes, "image/jpeg"); pic_.Size.Width.Value = width; pic_.Size.Height.Value = height; return pic_; };
// Add picture using different wrapping styles and alignments: var pic = addPicture("Wrapping style 'In line with text':");
pic = addPicture("Wrapping style 'Square', centered:"); pic.WrapFormat.Type = WrapType.Square; pic.Position.Horizontal.Type = ShapePositionType.Alignment; pic.Position.Horizontal.Alignment = ShapeHorizontalRelativeAlignment.Center;
pic = addPicture("Wrapping style 'Tight', centered:"); pic.WrapFormat.Type = WrapType.Tight; pic.Position.Horizontal.Type = ShapePositionType.Alignment; pic.Position.Horizontal.Alignment = ShapeHorizontalRelativeAlignment.Center;
// Add page break: sec.GetRange().Runs.Last.GetRange().Texts.AddBreak(BreakType.Page);
pic = addPicture("Wrapping style 'Through', left aligned:"); pic.WrapFormat.Type = WrapType.Through; pic.Position.Horizontal.Type = ShapePositionType.Alignment; pic.Position.Horizontal.Alignment = ShapeHorizontalRelativeAlignment.Left;
pic = addPicture("Wrapping style 'Top and Bottom', right aligned:"); pic.WrapFormat.Type = WrapType.TopBottom; pic.Position.Horizontal.Type = ShapePositionType.Alignment; pic.Position.Horizontal.Alignment = ShapeHorizontalRelativeAlignment.Right;
pic = addPicture("Wrapping style 'Behind text', left aligned:"); pic.WrapFormat.BehindText = true; pic.WrapFormat.Type = WrapType.None; pic.Position.Horizontal.Type = ShapePositionType.Alignment; pic.Position.Horizontal.Alignment = ShapeHorizontalRelativeAlignment.Left;
// Add page break: sec.GetRange().Runs.Last.GetRange().Texts.AddBreak(BreakType.Page);
pic = addPicture("Wrapping style 'In front of text', right aligned:"); pic.WrapFormat.BehindText = false; pic.WrapFormat.Type = WrapType.None; pic.Position.Horizontal.Type = ShapePositionType.Alignment; pic.Position.Horizontal.Alignment = ShapeHorizontalRelativeAlignment.Right;
pars.Add("The End.");
// Done: return doc; } }}