''
'' This code is part of Document Solutions for Word demos.
'' Copyright (c) MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Linq
Imports GrapeCity.Documents.Word
Imports GrapeCity.Documents.Imaging
'' This sample adds a paragraph of text, spllits 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
Function CreateDocx() As GcWordDocument
Dim doc = New GcWordDocument()
doc.Styles.DefaultParagraphFormat.Alignment = ParagraphAlignment.Both
'' Load picture data:
Dim picBytes = File.ReadAllBytes(Path.Combine("Resources", "Images", "road.jpg"))
'' Create a GcBitmap so that we can find out the native picture size:
Dim image = New GcBitmap(picBytes)
'' Scale picture to a smallish size:
Dim width = doc.Body.Sections.Last.PageSetup.ClientWidth / 6
Dim height = image.Height * (width / image.Width)
'' The section
Dim sec = doc.Body.Sections.First
'' The paragraphs collection:
Dim pars = sec.GetRange().Paragraphs
'' Generate a sample string (used in all sample paragraphs):
Dim str = 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
Dim addPicture As Func(Of String, Picture) =
Function(caption_)
pars.Add(caption_, doc.Styles(BuiltInStyleId.Heading2))
Dim par_ = pars.Add(str)
Dim text_ = par_.GetRange().Texts.First.Split(str.Length / 2)
Dim run_ = text_.ParentRun.Split(text_, InsertLocation.Before)
run_ = run_.Previous
Dim pic_ = run_.GetRange().Pictures.Add(picBytes, "image/jpeg")
pic_.Size.Width.Value = width
pic_.Size.Height.Value = height
Return pic_
End Function
'' Add picture using different wrapping styles And alignments:
Dim 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
End Function
End Class