Hi Charles,
Thanks for your interest in Aspose.Words. I think, you can achieve this by drawing Rectangle and Line Shapes on to the Page and then in the end grouping them into a single unit. Please see the following code and helper methods to draw individual boxes and lines.
Document doc = new Document();
Shape t1 = CreateTextBox(doc, "first", 10, 200, 100, 30);
Shape t2 = CreateTextBox(doc, "second", 120, 200, 100, 30);
Shape t3 = CreateTextBox(doc, "second", 230, 200, 100, 30);
Shape t4 = CreateTextBox(doc, "second", 340, 200, 100, 30);
Shape l1 = CreateLine(doc, new RectangleF(110, 215, 10, 0));
Shape l2 = CreateLine(doc, new RectangleF(220, 215, 10, 0));
Shape l3 = CreateLine(doc, new RectangleF(330, 215, 10, 0));
Shape l4 = CreateLine(doc, new RectangleF(440, 215, 10, 0));
GroupShape diagram = new GroupShape(doc);
diagram.ChildNodes.Add(t1);
diagram.ChildNodes.Add(l1);
diagram.ChildNodes.Add(t2);
diagram.ChildNodes.Add(l2);
diagram.ChildNodes.Add(t3);
diagram.ChildNodes.Add(l3);
diagram.ChildNodes.Add(t4);
diagram.ChildNodes.Add(l4);
diagram.Left = 0;
diagram.Top = 0;
diagram.Width = 500;
diagram.Height = 100;
diagram.CoordSize = new Size((int)500, (int)100);
doc.FirstSection.Body.FirstParagraph.AppendChild(diagram);
doc.Save(@"C:\Temp\out.docx");
public static Shape CreateLine(Document doc, RectangleF bounds)
{
Shape line = new Shape(doc, ShapeType.Line);
line.StrokeColor = Color.Red;
line.StrokeWeight = 2;
line.Bounds = new RectangleF(bounds.Left, bounds.Top, bounds.Width, bounds.Height);
line.RelativeHorizontalPosition = RelativeHorizontalPosition.Page;
line.RelativeVerticalPosition = RelativeVerticalPosition.Page;
return line;
}
public static Shape CreateTextBox(Document doc, string text,
double left, double top, double width, double height)
{
Shape textBox = new Shape(doc, ShapeType.TextBox);
textBox.RelativeHorizontalPosition = RelativeHorizontalPosition.Page;
textBox.RelativeVerticalPosition = RelativeVerticalPosition.Page;
textBox.Left = left;
textBox.Top = top;
textBox.Height = height;
textBox.Width = width;
textBox.WrapType = WrapType.None;
textBox.FillColor = Color.Green;
textBox.ZOrder = 2;
textBox.AppendChild(new Paragraph(doc));
Paragraph para = textBox.FirstParagraph;
para.ParagraphFormat.Alignment = ParagraphAlignment.Center;
Run run = new Run(doc);
run.Text = text;
para.AppendChild(run);
return textBox;
}
I hope, this helps.
Best regards,