//// This code is part of Document Solutions for Word demos.// Copyright (c) MESCIUS inc. All rights reserved.//usingSystem;usingSystem.IO;usingGrapeCity.Documents.Word;usingGrapeCity.Documents.Imaging; namespaceDsWordWeb.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.publicclassPictureWrap {publicGcWordDocumentCreateDocx() {GcWordDocument doc = newGcWordDocument(); 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 = newGcBitmap(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; } }}