จัดการรูปร่างกราฟิกเวกเตอร์ของไฟล์ XPS
โซลูชัน API ของ C++ สำหรับการทำงานกับกราฟิกเวกเตอร์ของไฟล์ XPS
XPS เป็นเช่นเดียวกับภาษาคำอธิบายหน้า (Page Description Languages) อื่นๆ ที่อนุญาตให้ทำงานกับกราฟิกเวกเตอร์ได้ โซลูชัน C++ API นี้นำเสนอการจัดการกราฟิกเวกเตอร์ของไฟล์ XPS โดยมีฟังก์ชันการทำงานที่หลากหลาย ซึ่งส่วนหนึ่งแสดงไว้ในโค้ดตัวอย่าง (code snippet) ที่นี่ มีตัวอย่างเพียงเล็กน้อยเกี่ยวกับการเพิ่มรูปทรงวงรีและรูปทรงสี่เหลี่ยมลงในไฟล์ นอกจากนี้ คุณจะได้เรียนรู้วิธีการจัดการสีของรูปร่างเหล่านี้ เมื่อปฏิบัติตามวิธีนี้ คุณจะสามารถสร้างรูปทรงเรขาคณิตใดๆ ก็ตามที่คุณต้องการได้
ในการทำงานกับรูปร่างกราฟิกเวกเตอร์ (vector graphics shapes) ของ XPS เราจำเป็นต้องใช้:
Aspose.Page สำหรับ C++ API ซึ่งเป็น API การจัดการและการแปลงเอกสารที่มีฟีเจอร์ครบครัน ทรงประสิทธิภาพ และใช้งานง่ายสำหรับแพลตฟอร์ม C++
คุณสามารถดาวน์โหลดเวอร์ชันล่าสุดได้โดยตรง เพียงเปิดโปรแกรมจัดการแพ็กเกจ NuGet (NuGet package manager) แล้วค้นหา Aspose.Page.Cpp จากนั้นให้ทำการติดตั้ง คุณอาจใช้คำสั่งต่อไปนี้จาก Package Manager Console ได้เช่นกัน
Package Manager Console Command
PM> Install-Package Aspose.Page.Cpp
ขั้นตอนในการเพิ่มรูปสี่เหลี่ยมผืนผ้าด้วย C++
- ขั้นแรก กำหนดเส้นทางไปยังไดเรกทอรีที่จะบันทึกเอกสาร
- สร้างไฟล์ XPS โดยการสร้างอินสแตนซ์ XpsDocument Class
- ใช้เมธอดของคลาส XpsPath เพื่อสร้างรูปสี่เหลี่ยมผืนผ้า
- สุดท้าย ให้ทำการบันทึกเอกสาร XPS ที่แก้ไขโดยเรียกดู XPsDocument.Save Method
เพิ่มรูปสี่เหลี่ยมผืนผ้า
// 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 XPS รูปแบบไฟล์คืออะไร
XPS (XML Paper Specification) เป็นรูปแบบทางเลือกของ Microsoft ต่อ PDF พื้นฐานบน XML/HTML รักษาเลย์เอาต์ข้ามแพลตฟอร์มและไม่ขึ้นกับระบบปฏิบัติการ