فرش الكود وتدرجات XPS

حل C++ API للعمل مع الفرش والتدرجات اللونية لملفات XPS.

 

يوفر لك Aspose.Page API Solution for C++ القدرة على التعامل مع الرسومات المتجهة لملفات XPS. يتيح لك إنشاء أشكال هندسية مختلفة بألوان وأنسجة مختلفة. تعرف أيضًا على وثائق Aspose.Page حول كيفية العمل باستخدام الفرش .

للتعامل مع الفرش والتدرجات اللونية لملفات XPS، نحتاج إلى:

  • Aspose.Page for C++ API وهي واجهة برمجة تطبيقات غنية بالميزات وقوية وسهلة الاستخدام لمعالجة المستندات وتحويلها لمنصة C++.

  • يمكنك تنزيل أحدث إصدار مباشرةً، ما عليك سوى فتح مدير الحزم NuGet، والبحث عن Aspose.Page.Cpp وتثبيته. يمكنك أيضًا استخدام الأمر التالي من وحدة تحكم إدارة الحزم.

Package Manager Console Command


    PM> Install-Package Aspose.Page.Cpp

العمل باستخدام الفرش المرئية باستخدام لغة C++

يتيح لك Aspose.Page for C++ API إضافة شبكة إلى ملفات XPS الخاصة بك باستخدام بضعة أسطر من التعليمات البرمجية. يمكن القيام بذلك لكل من المستندات الجديدة والحالية. يتم استخدام فئة XpsVisualBrush لتعيين خصائص الشبكة، باستخدام XpsPathGeometry و XpsCanvas الكائنات. لإضافة شبكة إلى مستند XPS، ستحتاج إلى اتباع الخطوات التالية:

  1. باستخدام فئة XpsDocument لإنشاء كائن مستند
  2. قم بإنشاء كائن XpsPathGeometry مع تحديد الأجزاء الضرورية.
  3. استخدم فئة XpsCanvas لتعيين تحويل العرض.
  4. اضبط خصائص Fill و Opacity حسب الرغبة.
  5. احفظ المستند عن طريق استدعاء الأسلوب Save().
Namespaces in use
using Aspose::Page::XPS;
using Aspose::Page::XPS::XpsModel;
using System::Drawing;
استخدام الفرشاة البصرية لإنشاء الشبكة
// The path to the documents directory.
System::String dataDir = RunExamples::GetDataDir_WorkingWithVisualBrush();
System::SharedPtr<XpsDocument> doc = System::MakeObject<XpsDocument>();
// Geometry for magenta grid VisualBrush
System::SharedPtr<XpsPathGeometry> pathGeometry = doc->CreatePathGeometry();
pathGeometry->AddSegment(doc->CreatePolyLineSegment(System::MakeArray<System::Drawing::PointF>({System::Drawing::PointF(240.f, 5.f), System::Drawing::PointF(240.f, 310.f), System::Drawing::PointF(0.f, 310.f)})));
pathGeometry->idx_get(0)->set_StartPoint(System::Drawing::PointF(0.f, 5.f));
// Canvas for magenta grid VisualBrush
System::SharedPtr<XpsCanvas> visualCanvas = doc->CreateCanvas();
System::SharedPtr<XpsPath> visualPath = visualCanvas->AddPath(doc->CreatePathGeometry(u"M 0,4 L 4,4 4,0 6,0 6,4 10,4 10,6 6,6 6,10 4,10 4,6 0,6 Z"));
visualPath->set_Fill(doc->CreateSolidColorBrush(doc->CreateColor(1.f, .61f, 0.1f, 0.61f)));
System::SharedPtr<XpsPath> gridPath = doc->AddPath(pathGeometry);
//Create Visual Brush, it is specified by some XPS fragment (vector graphics and glyphs)
gridPath->set_Fill(doc->CreateVisualBrush(visualCanvas, System::Drawing::RectangleF(0.f, 0.f, 10.f, 10.f), System::Drawing::RectangleF(0.f, 0.f, 10.f, 10.f)));
(System::ExplicitCast<Aspose::Page::XPS::XpsModel::XpsVisualBrush>(gridPath->get_Fill()))->set_TileMode(Aspose::Page::XPS::XpsModel::XpsTileMode::Tile);
// New canvas
System::SharedPtr<XpsCanvas> canvas = doc->AddCanvas();
canvas->set_RenderTransform(doc->CreateMatrix(1.f, 0.f, 0.f, 1.f, 268.f, 70.f));
// Add grid
canvas->AddPath(pathGeometry);
// Red transparent rectangle in the middle top
System::SharedPtr<XpsPath> path = canvas->AddPath(doc->CreatePathGeometry(u"M 30,20 l 258.24,0 0,56.64 -258.24,0 Z"));
path = canvas->AddPath(doc->CreatePathGeometry(u"M 10,10 L 228,10 228,100 10,100"));
path->set_Fill(doc->CreateSolidColorBrush(doc->CreateColor(1.0f, 0.0f, 0.0f)));
path->set_Opacity(0.7f);
// Save resultant XPS document
doc->Save(dataDir + u"output/" + u"AddGrid_out.xps");
view raw add-grid.cpp hosted with ❤ by GitHub

أضف تدرجًا أفقيًا باستخدام لغة C++.

يتيح لك حل Aspose.Page API لـ C++ إضافة أنواع مختلفة من التدرجات إلى مستندات XPS الخاصة بك باستخدام XpsGradientBrush Class. يتم استخدام هذه الفئة لتحديد معلومات XpsGradientStop وXpsPath لكائن XpsDocument الذي يمثل ملف XPS. فيما يلي مثال لكيفية القيام بذلك:

  1. تهيئة كائن XpsDocument.
  2. حدد معلمات XpsGradientStop وXpsPath لمستند XPS.
  3. قم بتعيين معلومات العرض.
  4. احفظ المستند باستخدام طريقة Save().
أدخل تدرجًا أفقيًا في XPS
// The path to the documents directory.
System::String dataDir = RunExamples::GetDataDir_WorkingWithGradient();
// Create new XPS Document
System::SharedPtr<XpsDocument> doc = System::MakeObject<XpsDocument>();
// Initialize List of XpsGradentStop
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(255, 244, 253, 225), 0.0673828f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 251, 240, 23), 0.314453f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 252, 209, 0), 0.482422f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 241, 254, 161), 0.634766f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 53, 253, 255), 0.915039f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(255, 12, 91, 248), 1.f));
// Create new path by defining geometery in abbreviation form
System::SharedPtr<XpsPath> path = doc->AddPath(doc->CreatePathGeometry(u"M 10,210 L 228,210 228,300 10,300"));
path->set_RenderTransform(doc->CreateMatrix(1.f, 0.f, 0.f, 1.f, 20.f, 70.f));
path->set_Fill(doc->CreateLinearGradientBrush(System::Drawing::PointF(10.f, 0.f), System::Drawing::PointF(228.f, 0.f)));
(System::ExplicitCast<Aspose::Page::XPS::XpsModel::XpsGradientBrush>(path->get_Fill()))->get_GradientStops()->AddRange(stops);
// Save resultant XPS document
doc->Save(dataDir + u"output/" + u"AddHorizontalGradient_outXPS.xps");

XPS ما هو XPS تنسيق الملف

تنسيق XPS مشابه لتنسيق PDF. كلاهما عبارة عن تنسيقات لغة وصف الصفحة (PDL). يعتمد EPS على HTML وليس على لغة PostScript. يمكن أن يحتوي ملف .eps على ترميز لهيكل المستند بالإضافة إلى معلومات حول الشكل الذي سيبدو عليه المستند. هناك أيضًا إرشادات مضافة حول كيفية طباعة المستند وتقديمه. تتمثل ميزة التنسيق في أنه يعمل على إصلاح وصف المستند مما يعني أنه سيبدو كما هو بغض النظر عن من ومن أي نظام تشغيل يفتحه.