Використання графічних утиліт XPS | .NET

Як легко створювати прості форми в XPS

Специфікація XPS визначає графічні примітивні елементи, які можна використовувати для створення будь-яких складних форм. Aspose.Page для .NET надає класи, що інкапсулюють ці елементи. Однак їх використання може бути трохи виснажливим, коли вам потрібно створити навіть відносно прості фігури, такі як круговий сектор або сегмент, або правильний n-кутник, вписаний у коло або описаний навколо нього. Навіть намалювати коло чи еліпс не так просто, як могло б бути. Тому Aspose.Page додатково надає набір службових методів, які, швидше за все, заощадять ваш час при виконанні подібних завдань.

У наступному прикладі ми використовуємо всі доступні утиліти форми. Зауважте, що всі вони повертають об’єкт XpsPathGeometry, який потім можна використовувати для побудови шляхів XPS. І для цих контурів ви можете вказати властивості зовнішнього вигляду - пензлі, візерунок обведення, непрозорість тощо.

Ми починаємо з нового документа XPS, регулюючи розмір першої сторінки. Перша форма, яку ми розміщуємо на сторінці, — це коло (зазначене його центром і радіусом), заповнене суцільним зеленим кольором. Далі ми впишемо незафарбований червоний правильний п’ятикутник у це коло. Далі йде правильний шестикутник, обведений пурпуровим кольором.

Праворуч ми спочатку малюємо червоний круговий сектор (або «частку пирога») між -45 і +45 градусами, а потім чорний круговий сегмент з такими ж параметрами над сектором.

Остання частина креслення складається з червоного прямокутника (зазначеного верхньою лівою вершиною та розмірами) та жовтого еліпса (заданого центром і радіусами), вписаного в прямокутник. Тут контролюємо напис «вручну».

Ось що ми маємо побачити у збереженому файлі XPS:

Утиліти XPS shapes

Як легко додати зображення на сторінку XPS

З примітивами, визначеними специфікацією XPS, додавання зображення на сторінку складається з двох кроків:

Але, на щастя, серед графічних утиліт XPS API Aspose.Page для .NET є зручний метод, який може зробити всю (майже) роботу за вас. Він також пропонує різні режими підгонки. Давайте розглянемо приклад нижче:

 1// For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-.NET
 2// The path to the documents directory.
 3string dataDir = RunExamples.GetDataDir_WorkingWithImages();
 4// Create new XPS Document
 5using (XpsDocument doc = new XpsDocument())
 6{
 7    // Set first page's size.
 8    doc.Page.Width = 540f;
 9    doc.Page.Height = 220f;
10
11    // Draw the image box.
12    RectangleF imageBox = new RectangleF(10f, 10f, 200f, 200f);
13    XpsPath path = doc.AddPath(doc.Utils.CreateRectangle(imageBox));
14    path.Stroke = doc.CreateSolidColorBrush(Color.Black);
15    // Add an image to fit width.
16    path = doc.Utils.CreateImage(dataDir + "R08LN_NN.jpg", imageBox, ImageMode.FitToWidth);
17    // Prevent tiling.
18    ((XpsImageBrush)path.Fill).TileMode = XpsTileMode.None;
19    doc.Add(path);
20
21    // Add an image to fit width.
22    doc.Add(doc.Utils.CreateImage(dataDir + "R08LN_NN.jpg", new RectangleF(220f, 10f, 200f, 100f), ImageMode.FitToHeight));
23
24    // Add an image to fit width.
25    doc.Add(doc.Utils.CreateImage(dataDir + "R08LN_NN.jpg", new RectangleF(430f, 10f, 100f, 200f), ImageMode.FitToBox));
26
27    // Save resultant XPS document 
28    doc.Save(dataDir + "UseImageUtilsXPS.xps");
29}

Знову ж таки, ми починаємо з нового документа XPS і регулюємо розмір першої сторінки. На цьому етапі варто зазначити, що за замовчуванням ваше зображення, яке використовується як пензель, розташовуватиметься по прямокутній області так само, як якщо б воно використовувалося в режимі XpsTileMode.Tile. Однак у першій частині прикладу ми демонструємо, як запобігти цій плитці.

Отже, спочатку ми хочемо, щоб зображення з’явилося в (10, 10) і відповідало ширині прямокутної коробки, яка має 200 одиниць завширшки та 200 одиниць заввишки. Щоб було наочніше побачити результат, спочатку малюємо саму коробку. Далі ми створюємо зображення (зауважте, що насправді це заповнений контур). Нарешті, після отримання заливки шляху та його приведення до XpsImageBrush, ми встановлюємо для властивості TileMode значення XpsTileMode.None.

Праворуч ми розміщуємо те саме зображення та робимо його відповідним по висоті рамки зображення. Зверніть увагу на плитку.

Нарешті, ми знову розміщуємо те саме зображення праворуч і змушуємо його відповідати як висоті, так і ширині рамки зображення, що спотворює зображення.

А ось результат у збереженому файлі XPS:

Утиліти для зображень XPS

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.