Робота з фігурами

Ця тема обговорює, як працювати программатично з формами за допомогою Aspose.Wordsй

Форми в Aspose.Words представляє об’єкт в шарі малювання, такі як AutoShape, текстова коробка, форма, об’єкт OLE, управління ActiveX або малюнок. Документ Word може містити одну або іншу форму. Шпильки в Aspose.Words представлені Shape клас.

Вставки за допомогою конструктора документів

Ви можете вставляти в лінію форму з вказаним типом і розміром і вільно плаваючою формою з вказаним положенням, розміром і типом текстового обгортання в документ, використовуючи вказаний тип і розмір і форму вільного плавлення з вказаним положенням, розміром і типом текстового обгортання в документі, використовуючи вказану форму і розмір і форму безкоштовної плавки з вказаним положенням, розмір і тип текстового обгортання в документі, використовуючи вказану форму і розмір і форму безкоштовної плавки з вказаним положенням, розмір і тип обгортання тексту в документі за допомогою документа InsertShape метод. Про нас InsertShape метод дозволяє вставляти DML форму в документ модель. Документ повинен бути збережений у форматі, який підтримує форми DML, інакше такі вершини будуть перетворені на форму VML, при цьому збереження документа.

Приклад коду показує, як вставити ці типи форм у документ:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
//Free-floating shape insertion.
Shape shape = builder.InsertShape(ShapeType.TextBox, RelativeHorizontalPosition.Page, 100, RelativeVerticalPosition.Page, 100, 50, 50, WrapType.None);
shape.Rotation = 30.0;
builder.Writeln();
//Inline shape insertion.
shape = builder.InsertShape(ShapeType.TextBox, 50, 50);
shape.Rotation = 30.0;
OoxmlSaveOptions so = new OoxmlSaveOptions(SaveFormat.Docx);
// "Strict" or "Transitional" compliance allows to save shape as DML.
so.Compliance = OoxmlCompliance.Iso29500_2008_Transitional;
dataDir = dataDir + "Shape_InsertShapeUsingDocumentBuilder_out.docx";
// Save the document to disk.
doc.Save(dataDir, so);

Набір Aspect Ratio Locked

Використання Aspose.Words, Ви можете вказати, чи заблоковано співвідношення форми через AspectRatioLocked майно.

Приклад наступного коду показує, як працювати з AspectRatioLocked майно:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
var shape = builder.InsertImage(dataDir + "Test.png");
shape.AspectRatioLocked = false;
dataDir = dataDir + "Shape_AspectRatioLocked_out.doc";
// Save the document to disk.
doc.Save(dataDir);

Встановити Shape Layout В клітинку

Ви також можете вказати, чи відображається форма всередині таблиці або зовні його за допомогою IsLayoutInCell майно.

Приклад наступного коду показує, як працювати з IsLayoutInCell майно:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document(dataDir + @"LayoutInCell.docx");
DocumentBuilder builder = new DocumentBuilder(doc);
Shape watermark = new Shape(doc, ShapeType.TextPlainText);
watermark.RelativeHorizontalPosition = RelativeHorizontalPosition.Page;
watermark.RelativeVerticalPosition = RelativeVerticalPosition.Page;
watermark.IsLayoutInCell = true; // Display the shape outside of table cell if it will be placed into a cell.
watermark.Width = 300;
watermark.Height = 70;
watermark.HorizontalAlignment = HorizontalAlignment.Center;
watermark.VerticalAlignment = VerticalAlignment.Center;
watermark.Rotation = -40;
watermark.Fill.Color = Color.Gray;
watermark.StrokeColor = Color.Gray;
watermark.TextPath.Text = "watermarkText";
watermark.TextPath.FontFamily = "Arial";
watermark.Name = string.Format("WaterMark_{0}", Guid.NewGuid());
watermark.WrapType = WrapType.None;
Run run = doc.GetChildNodes(NodeType.Run, true)[doc.GetChildNodes(NodeType.Run, true).Count - 1] as Run;
builder.MoveTo(run);
builder.InsertNode(watermark);
doc.CompatibilityOptions.OptimizeFor(MsWordVersion.Word2010);
dataDir = dataDir + "Shape_IsLayoutInCell_out.docx";
// Save the document to disk.
doc.Save(dataDir);

Створення Snip Corner прямокутника

Ви можете створити прямокутний прямокутний прямокутник за допомогою Aspose.Wordsй Типи форми SingleCornerSnipped, TopCornersSnipped, DiagonalCornersSnipped, TopCornersOneRoundedOneSnipped, SingleCornerRounded, TopCornersRounded, і DiagonalCornersRounded.

Форма DML створюється за допомогою InsertShape метод з цими типами форми. Ці типи не можуть використовуватися для створення VML-форм. Приєднатися до створення форми за допомогою публічного конструктора класу “Шапе”.

Приклад коду показує, як вставити ці форми в документ:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertShape(ShapeType.TopCornersSnipped, 50, 50);
OoxmlSaveOptions so = new OoxmlSaveOptions(SaveFormat.Docx);
so.Compliance = OoxmlCompliance.Iso29500_2008_Transitional;
dataDir = dataDir + "AddCornersSnipped_out.docx";
//Save the document to disk.
doc.Save(dataDir, so);

Отримувати Фактичні точки фігури

Використання Aspose.Words API, Ви можете отримати місце розташування і розмір форми, що містить блок в точках, відносно анкеру верхньої форми. Для цього використовуйте BoundsInPoints майно.

Приклад наступного коду показує, як працювати з BoundsInPoints майно:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
var shape = builder.InsertImage(dataDir + "Test.png");
shape.AspectRatioLocked = false;
Console.Write("\nGets the actual bounds of the shape in points.");
Console.WriteLine(shape.GetShapeRenderer().BoundsInPoints);

Вказати Вертикальний Якір

Ви можете вказати текст вертикального вирівнювання у вигляді форми за допомогою VerticalAnchor майно.

Приклад наступного коду показує, як працювати з VerticalAnchor майно:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document(dataDir + @"VerticalAnchor.docx");
NodeCollection shapes = doc.GetChildNodes(NodeType.Shape, true);
Shape textBoxShape = shapes[0] as Shape;
if (textBoxShape != null)
{
textBoxShape.TextBox.VerticalAnchor = TextBoxAnchor.Bottom;
}
doc.Save(dataDir + "VerticalAnchor_out.docx");

Детект Смарт Арт форма

Aspose.Words також дозволяє виявити, чи має форму SmartArt об’єкт. Для цього використовуйте HasSmartArt майно.

Приклад наступного коду показує, як працювати з HasSmartArt майно:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document(dataDir + "input.docx");
int count = 0;
foreach (Shape shape in doc.GetChildNodes(NodeType.Shape, true))
{
if (shape.HasSmartArt)
count++;
}
Console.WriteLine("The document has {0} shapes with SmartArt.", count);

Вставити горизонтальний Рулі в документі

Ви можете вставити форму горизонтального правила в документ, використовуючи InsertHorizontalRule метод.

Приклад наступного коду показує, як це зробити:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// Initialize document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Writeln("Insert a horizontal rule shape into the document.");
builder.InsertHorizontalRule();
dataDir = dataDir + "DocumentBuilder.InsertHorizontalRule_out.doc";
doc.Save(dataDir);

Aspose.Words API забезпечує HorizontalRuleFormat властивість доступу до властивостей горизонтальної форми правила. Про нас HorizontalRuleFormat клас визначає основні властивості, такі як Висота, колір, NoShade тощо для форматування горизонтального правила.

Приклад наступного коду показує, як встановити HorizontalRuleFormat:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
DocumentBuilder builder = new DocumentBuilder();
Shape shape = builder.InsertHorizontalRule();
HorizontalRuleFormat horizontalRuleFormat = shape.HorizontalRuleFormat;
horizontalRuleFormat.Alignment = HorizontalRuleAlignment.Center;
horizontalRuleFormat.WidthPercent = 70;
horizontalRuleFormat.Height = 3;
horizontalRuleFormat.Color = Color.Blue;
horizontalRuleFormat.NoShade = true;
builder.Document.Save("HorizontalRuleFormat.docx");

Імпортні фігури з Math XML як форма в DOM

Ви можете використовувати ConvertShapeToOfficeMath об’єкти Office Math. Значення за замовчуванням цього майна відповідає Microsoft Word поведінка, тобто форми з рівнянням XML не перетворюються на об’єкти математики Office.

Приклад коду показує, як перетворити форму на об’єкти Office Math:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
LoadOptions lo = new LoadOptions();
lo.ConvertShapeToOfficeMath = true;
// Specify load option to use previous default behaviour i.e. convert math shapes to office math ojects on loading stage.
Document doc = new Document(dataDir + @"OfficeMath.docx", lo);
//Save the document into DOCX
doc.Save(dataDir + "ConvertShapeToOfficeMath_out.docx", SaveFormat.Docx);