คอยควบคุมโค้ดแปลงแปรงการทำงานรวมถึงการตั้งค่าไล่ระดับสีผ่านระบบ XPS

โซลูชัน C++ API เพื่อเข้าประมวลผลแปรงจำลอง (brushes) และการไล่ระดับสีบนไฟล์ XPS

 

C++ โซลูชัน Aspose.Page API จะคอยซัพพอร์ตคุณให้ลงลึกระดับประมวลผลกราฟฟิกเลเยอร์แบบเวคเตอร์บนไฟล์ XPS นอกจากนี้ยังรองรับการปั้นรูปทรงเรขาคณิตในสีรวมถึงผิวสัมผัสรูปแปลกตาไปจากเดิม คุณสามารถอ่านข้อมูลของ ความสามารถของโหมด brush เพิ่มเติมได้ที่เอกสาร Aspose.Page

ถ้าต้องการปรับตั้งค่าให้คำสั่ง brushes หรือ gradients ในไฟล์ XPS ใช้งานได้ คุณจำเป็นต้องมี:

  • C++ API Aspose.Page ตัวควบคุมอันทรงประสิทธิภาพที่ทั้งยอดเยี่ยม ใช้งานแปลงเอกสารและแต่งเติมไฟล์ของคุณได้ดี

  • ซึ่งคุณสามารถหาดาวน์โหลดเอาเวอร์ชั่นใหม่มาใช้งานได้โดยตรงบนแพ็กเกจ NuGet (NuGet package manager) แล้วมองหาฟีเจอร์นี้ผ่าน Aspose.Page.Cpp จากนั้นกดติดตั้งลงเครื่องได้เลย หรือคุณสามารถเปิดแพ็กเกจนี้ผ่านคำสั่ง Package Manager Console บนเครื่องของคุณก็ได้

Package Manager Console Command


    PM> Install-Package Aspose.Page.Cpp

การควบคุมคำสั่งของ visual brushes ด้วย C++

C++ API ของ Aspose.Page จะทำให้คุณปรับแต่ง XPS file ของคุณด้วย grid pattern ซึ่งเป็นรูปแบบที่จัดมาในรูปแบบชุดคำสั่งเพื่อประมวลผลสำหรับทำลายเส้นทั้งบนเอกสารแบบใหม่และรูปแบบเดิม โครงสร้างข้อมูลหรือคลาส XpsVisualBrush ช่วยให้สามารถนำเอา XpsPathGeometry และ XpsCanvas มาวาดเส้นตารางเหล่านั้นออกมาเป็นชิ้นเป็นอันได้ แต่การที่ประมวลมันออกมาโชว์บนงาน XPS file ได้นั้นจะต้องทำตามขั้นตอนนี้ซะก่อน:

  1. ใช้คลาสข้อมูล XpsDocument คอยสร้างตัวเอกสารที่ต้องการ (Document object)
  2. สร้างข้อมูล XpsPathGeometry พร้อมกำหนดส่วนระบุขอบเขต (segments) การวาดที่จำเป็นแล้วลงโค้ด
  3. ใช้โครงสร้าง XpsCanvas คลาสเข้าคุมสั่งให้เกิดลายเส้นหรือทรานสฟอร์มแปลงค่า (rendering transformation)
  4. ทำการปรับเปลี่ยนสี (Fill) ตลอดจนถึงความทึบแสงในงาน (Opacity) ได้ตามใจชอบ
  5. ทำการบันทึกข้อมูลหน้ากระดาษไว้เพื่อประมวลผลด้วย Save() Method
Namespaces in use
using Aspose::Page::XPS;
using Aspose::Page::XPS::XpsModel;
using System::Drawing;
ระบบแปรง visual brush เปิดเข้าถึงเส้นตารางโครงภาพวาดเสมือน (grid)
    // 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");

เพิ่มกราฟิกสั่งระบบไล่ระดับสีแนวนอน (horizontal gradient) ด้วย C++

แพลตฟอร์ม C++ พร้อมโซลูชัน Aspose.Page API ยินดีให้เราเปิดรับโค้ดรันกราฟิกไล่ระดับสีหรือ gradients มากมายหลายรูปแบบผ่านคลาสคลาส XpsGradientBrush โหมดคลาสชนิดนี้ถูกดีไซน์สร้างมาเพื่อกำหนดคุณสมบัติให้ XpsGradientStop หรือ XpsPath ซึ่งถือว่าเป็น Object กลุ่ม XpsDocument บนไฟล์ XPS ในตัวเอง มาดูวิธีตัวอย่างง่ายตามต่อไปนี้ดีกว่า:

  1. เริ่มต้นการทำงานที่ (Initialize) object ไฟล์ XpsDocument
  2. ตั้งค่าตัวแปร XpsGradientStop และ XpsPath ของเอกสาร XPS file
  3. ตั้งค่าแบบจำลองเรนเดอร์ข้อมูล (rendering information)
  4. ให้บันทึกไฟล์ด้วยฟังก์ชัน Save() Method
ทำรูปแสดงบน XPS ให้โชว์ด้วย horizontal gradient
    // 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 (XML Paper Specification) เป็นรูปแบบทางเลือกของ Microsoft ต่อ PDF พื้นฐานบน XML/HTML รักษาเลย์เอาต์ข้ามแพลตฟอร์มและไม่ขึ้นกับระบบปฏิบัติการ