Використання графічних утиліт XPS | .NET
Як легко створювати прості форми в XPS
Специфікація XPS визначає графічні примітивні елементи, які можна використовувати для створення будь-яких складних форм. Aspose.Page для .NET надає класи, що інкапсулюють ці елементи. Однак їх використання може бути трохи виснажливим, коли вам потрібно створити навіть відносно прості фігури, такі як круговий сектор або сегмент, або правильний n-кутник, вписаний у коло або описаний навколо нього. Навіть намалювати коло чи еліпс не так просто, як могло б бути. Тому Aspose.Page додатково надає набір службових методів, які, швидше за все, заощадять ваш час при виконанні подібних завдань.
У наступному прикладі ми використовуємо всі доступні утиліти форми. Зауважте, що всі вони повертають об’єкт XpsPathGeometry, який потім можна використовувати для побудови шляхів XPS. І для цих контурів ви можете вказати властивості зовнішнього вигляду - пензлі, візерунок обведення, непрозорість тощо.
Ми починаємо з нового документа XPS, регулюючи розмір першої сторінки. Перша форма, яку ми розміщуємо на сторінці, — це коло (зазначене його центром і радіусом), заповнене суцільним зеленим кольором. Далі ми впишемо незафарбований червоний правильний п’ятикутник у це коло. Далі йде правильний шестикутник, обведений пурпуровим кольором.
Праворуч ми спочатку малюємо червоний круговий сектор (або «частку пирога») між -45 і +45 градусами, а потім чорний круговий сегмент з такими ж параметрами над сектором.
Остання частина креслення складається з червоного прямокутника (зазначеного верхньою лівою вершиною та розмірами) та жовтого еліпса (заданого центром і радіусами), вписаного в прямокутник. Тут контролюємо напис «вручну».
Ось що ми маємо побачити у збереженому файлі XPS:
Як легко додати зображення на сторінку 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: