Кодування фігур векторної графіки у файлах XPS

Рішення C++ API для роботи з векторною графікою файлів XPS

 

XPS, як і інші мови опису сторінок (Page Description Languages), дозволяє працювати з векторною графікою. Це рішення C++ API включає маніпулювання векторною графікою файлів XPS. Він пропонує широкий спектр функцій, частина з яких проілюстрована у фрагменті коду (code snippet) тут. Є лише кілька прикладів того, як додати до файлів овальні та прямокутні фігури. Додатково ви дізнаєтесь, як керувати кольорами цих фігур. Дотримуючись цього методу, ви зможете створити будь-яку геометричну фігуру.

Для роботи з фігурами векторної графіки (vector graphics shapes) XPS нам потрібні:

  • API Aspose.Page для C++, який є багатофункціональним, потужним і простим у використанні API для керування документами та їх перетворення для платформи C++.

  • Ви можете завантажити останню версію безпосередньо: просто відкрийте диспетчер пакетів NuGet (NuGet package manager), знайдіть Aspose.Page.Cpp і встановіть його. Ви також можете скористатися наступною командою в консолі диспетчера пакетів (Package Manager Console).

Package Manager Console Command

    PM> Install-Package Aspose.Page.Cpp

Кроки для додавання прямокутника за допомогою C++.

  1. Спочатку встановіть шлях до каталогу, в якому буде збережено документ.
  2. Створіть файл XPS шляхом створення екземпляра (instantiating) класу XpsDocument Class .
  3. Використовуйте методи класу XpsPath для створення прямокутника.
  4. Нарешті, збережіть змінений документ XPS, викликавши метод XPsDocument.Save.
Додати прямокутник
    // The path to the documents directory.
    System::String dataDir = RunExamples::GetDataDir_WorkingWithShapes();
    // Create new XPS Document
    System::SharedPtr<XpsDocument> doc = System::MakeObject<XpsDocument>();
    // CMYK (blue) solid color stroked rectangle in the lower left
    System::SharedPtr<XpsPath> path = doc->AddPath(doc->CreatePathGeometry(u"M 20,10 L 220,10 220,100 20,100 Z"));
    path->set_Stroke(doc->CreateSolidColorBrush(doc->CreateColor(dataDir + u"uswebuncoated.icc", System::MakeArray<float>({1.0f, 1.000f, 0.000f, 0.000f, 0.000f}))));
    path->set_StrokeThickness(12.f);
    // Save resultant XPS document
    doc->Save(dataDir + u"output/" + u"AddRectangleXPS_out.xps");

Додайте еліпс за допомогою C++.

Щоб додати еліпс або іншу фігуру до файлу XPS, вам потрібно буде виконати аналогічні кроки та використати ті ж сутності (entities), що й для додавання прямокутника.

Додайте еліпс
    // The path to the documents directory.
    System::String dataDir = RunExamples::GetDataDir_WorkingWithShapes();
    // Create new XPS Document
    System::SharedPtr<XpsDocument> doc = System::MakeObject<XpsDocument>();
    // Radial gradient stroked ellipse in the lower left
    System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<XpsGradientStop>>> stops = System::MakeObject<System::Collections::Generic::List<System::SharedPtr<XpsGradientStop>>>();
    stops->Add(doc->CreateGradientStop(doc->CreateColor(0, 0, 255), 0.f));
    stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 0, 0), .25f));
    stops->Add(doc->CreateGradientStop(doc->CreateColor(0, 255, 0), .5f));
    stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 255, 0), .75f));
    stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 0, 0), 1.f));
    
    System::SharedPtr<XpsPath> path = doc->AddPath(doc->CreatePathGeometry(u"M 20,250 A 100,50 0 1 1 220,250 100,50 0 1 1 20,250"));
    path->set_Stroke(doc->CreateRadialGradientBrush(System::Drawing::PointF(575.f, 125.f), System::Drawing::PointF(575.f, 100.f), 75.f, 50.f));
    (System::ExplicitCast<Aspose::Page::XPS::XpsModel::XpsGradientBrush>(path->get_Stroke()))->set_SpreadMethod(Aspose::Page::XPS::XpsModel::XpsSpreadMethod::Reflect);
    (System::ExplicitCast<Aspose::Page::XPS::XpsModel::XpsGradientBrush>(path->get_Stroke()))->get_GradientStops()->AddRange(stops);
    stops->Clear();
    path->set_StrokeThickness(12.f);
    // Save resultant XPS document
    doc->Save(dataDir + u"output/" + u"AddEllipse_outXPS.xps");

XPS What is XPS File Format

XPS (XML Paper Specification) — альтернатива Microsoft до PDF. Заснований на XML/HTML, зберігає макет на різних платформах і не залежить від операційної системи.