เพิ่ม Gradient Grid Transparency XPS

ไฟล์ XPS สามารถใช้เพื่อแสดงข้อมูลภาพจำนวนมาก รองรับข้อความ รูปภาพ ความโปร่งใสของวัตถุ กริด การไล่ระดับสี และคุณสมบัติอื่นๆ อีกมากมาย คุณสามารถแทรกวัตถุไล่ระดับสี เส้นตาราง และโปร่งใสในไฟล์ XPS ได้ตามความต้องการของคุณ ในบทความนี้ เราจะสำรวจคุณลักษณะเหล่านี้โดยละเอียด พร้อมด้วยตัวอย่างและกรณีการใช้งานต่างๆ ให้เราอธิบายหัวข้อต่อไปนี้:

การติดตั้ง XPS API สำหรับ C++

คุณสามารถกำหนดค่า Aspose.Page for C++ API ได้อย่างรวดเร็วและง่ายดายในแอปพลิเคชันการเขียนโปรแกรมของคุณสำหรับจัดการ XPS, PS, EPS และรูปแบบไฟล์อื่นๆ ที่รองรับ เพียงดาวน์โหลดไฟล์ DLL จากทางการ ดาวน์โหลด หรือติดตั้งจากแกลเลอรี NuGet ด้วยคำสั่งด้านล่าง:

PM> Install-Package Aspose.Page.Cpp 

การเพิ่ม Gradient ในไฟล์ XPS โดยใช้ C++

บางครั้งคุณต้องเพิ่มการไล่ระดับสีในไฟล์ XPS คุณสามารถจัดการไฟล์ XPS ได้เนื่องจาก API ช่วยให้คุณเพิ่มการไล่ระดับสีแบบเส้นตรง แนวนอน และแนวตั้งได้ ให้เราเพิ่มการไล่ระดับสีต่อไปนี้ในไฟล์ XPS:

เพิ่ม Vertical Gradient ในไฟล์ XPS ด้วย C++

คุณสามารถเพิ่มการไล่ระดับสีแนวตั้งในไฟล์ XPS ได้ง่ายๆ ด้วยการเรียก API ง่ายๆ เพียงไม่กี่ครั้ง ด้านล่างนี้เป็นขั้นตอนในการเพิ่มการไล่ระดับสีในแนวตั้ง:

  1. สร้าง เอกสาร XPS ใหม่
  2. เริ่มต้นรายการของ XpsGradientStop
  3. สร้างเส้นทางใหม่โดยกำหนดรูปทรงเรขาคณิต
  4. บันทึกเอกสาร XPS ที่เป็นผลลัพธ์

โค้ดด้านล่างอิงตามขั้นตอนเหล่านี้ ซึ่งสาธิตวิธีการเพิ่มการไล่ระดับสีแนวตั้งในไฟล์ XPS โดยใช้ C++:

// สร้างเอกสาร XPS ใหม่
auto doc = System::MakeObject<XpsDocument>();

// เริ่มต้นรายการ XpsGradientStop
auto stops = System::MakeObject<System::Collections::Generic::List<System::SharedPtr<XpsGradientStop>>>();
stops->Add(doc->CreateGradientStop(doc->CreateColor(253, 255, 12, 0), 0.f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(252, 255, 154, 0), 0.359375f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(252, 255, 56, 0), 0.424805f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(253, 255, 229, 0), 0.879883f));
stops->Add(doc->CreateGradientStop(doc->CreateColor(252, 255, 255, 234), 1.f));

// สร้างเส้นทางใหม่โดยกำหนดรูปทรงเรขาคณิตในรูปแบบตัวย่อ
System::SharedPtr<XpsPath> path = doc->AddPath(doc->CreatePathGeometry(u"M 10,110 L 228,110 228,200 10,200"));
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, 110.f), System::Drawing::PointF(10.f, 200.f)));
(System::DynamicCast<Aspose::Page::Xps::XpsModel::XpsGradientBrush>(path->get_Fill()))->get_GradientStops()->AddRange(stops);

// บันทึกเอกสาร XPS ที่เป็นผลลัพธ์
doc->Save(RunExamples::outDir() + u"AddVerticalGradient_out.xps");

เพิ่มการไล่ระดับสีแนวนอนใน XPS โดยใช้ C ++

อีกรูปแบบที่เป็นไปได้ของการไล่ระดับสีในไฟล์ XPS คือการไล่ระดับสีในแนวนอน วิธีการเพิ่มการไล่ระดับสีในแนวนอนนั้นเกี่ยวข้องกับกรณีการใช้งานที่เราได้กล่าวถึงข้างต้นเล็กน้อย ต่อไปนี้เป็นขั้นตอนที่คุณต้องปฏิบัติตามเพื่อเพิ่มการไล่ระดับสีในแนวนอน:

  1. สร้างเอกสาร XPS ใหม่
  2. ระบุการหยุดการไล่ระดับสีโดยใช้ XpsGradientStop
  3. สร้างเส้นทางด้วยรูปทรงเรขาคณิต
  4. บันทึกเอกสาร XPS เอาต์พุต

ข้อมูลโค้ดต่อไปนี้อธิบายวิธีการเพิ่มการไล่ระดับสีแนวนอนในไฟล์ XPS โดยใช้ C ++:

// สร้างเอกสาร XPS ใหม่
auto doc = System::MakeObject<XpsDocument>();

// เริ่มต้นรายการ XpsGradientStop
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));

// สร้างเส้นทางใหม่โดยกำหนดรูปทรงเรขาคณิตในรูปแบบตัวย่อ
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::DynamicCast<Aspose::Page::Xps::XpsModel::XpsGradientBrush>(path->get_Fill()))->get_GradientStops()->AddRange(stops);

// บันทึกเอกสาร XPS ที่เป็นผลลัพธ์
doc->Save(RunExamples::outDir() + u"AddHorizontalGradient_out.xps");

แทรก Grid ในไฟล์ XPS ด้วย C++

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

  1. เริ่มต้นวัตถุคลาส XpsDocument
  2. ระบุเรขาคณิตสำหรับกริด VisualBrush
  3. สร้าง Canvas สำหรับ VisualBrush ตารางสีม่วงแดง
  4. สร้าง Visual Brush และเพิ่มกริด
  5. บันทึกไฟล์ XPS เอาต์พุต

โค้ดด้านล่างอิงจากขั้นตอนเหล่านี้ซึ่งอธิบายวิธีการแทรกกริดในไฟล์ XPS โดยใช้ C++:

auto doc = System::MakeObject<XpsDocument>();

// เรขาคณิตสำหรับกริดสีม่วงแดง 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));

// ผ้าใบสำหรับ 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->CreatePath(pathGeometry);

//สร้าง Visual Brush ซึ่งระบุโดยชิ้นส่วน XPS (กราฟิกแบบเวกเตอร์และสัญลักษณ์)
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::DynamicCast<Aspose::Page::Xps::XpsModel::XpsVisualBrush>(gridPath->get_Fill()))->set_TileMode(Aspose::Page::Xps::XpsModel::XpsTileMode::Tile);

// ผ้าใบใหม่
System::SharedPtr<XpsCanvas> canvas = doc->AddCanvas();
canvas->set_RenderTransform(doc->CreateMatrix(1.f, 0.f, 0.f, 1.f, 268.f, 70.f));

// เพิ่มกริด
canvas->AddPath(gridPath);

// สี่เหลี่ยมผืนผ้าโปร่งใสสีแดงตรงกลางด้านบน
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);

// บันทึกเอกสาร XPS ที่เป็นผลลัพธ์
doc->Save(RunExamples::outDir() + u"AddGrid_out.xps");

แทรกวัตถุโปร่งใสในไฟล์ XPS โดยใช้ C++

คุณสมบัติที่น่าตื่นเต้นอีกอย่างสำหรับการทำงานกับไฟล์ XPS คือการสนับสนุนความโปร่งใสและความทึบ คุณอาจต้องเพิ่มวัตถุโปร่งใสในไฟล์ XPS ภายใต้สถานการณ์ต่างๆ สามารถทำได้โดยใช้ขั้นตอนต่อไปนี้:

  1. สร้าง เอกสาร XPS ใหม่
  2. สร้างเส้นทางด้วยเรขาคณิตสี่เหลี่ยมผืนผ้าปิด
  3. เพิ่มรูปทรงเรขาคณิตสำหรับเส้นทางต่างๆ
  4. บันทึกเอกสาร XPS เอาต์พุต

ขั้นตอนเหล่านี้ตามด้วยโค้ดต่อไปนี้ ซึ่งสาธิตวิธีการเพิ่มวัตถุโปร่งใสในไฟล์ XPS ด้วยภาษาการเขียนโปรแกรม C++:

// สร้างเอกสาร XPS ใหม่
auto doc = System::MakeObject<XpsDocument>();

// เพียงเพื่อแสดงความโปร่งใส
doc->AddPath(doc->CreatePathGeometry(u"M120,0 H400 v1000 H120"))->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Gray()));
doc->AddPath(doc->CreatePathGeometry(u"M300,120 h600 V420 h-600"))->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Gray()));

// สร้างเส้นทางด้วยเรขาคณิตสี่เหลี่ยมผืนผ้าปิด
System::SharedPtr<XpsPath> path1 = doc->CreatePath(doc->CreatePathGeometry(u"M20,20 h200 v200 h-200 z"));
// ตั้งค่าแปรงทึบสีน้ำเงินเพื่อเติมเส้นทางที่ 1
path1->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Blue()));
// เพิ่มไปยังหน้าปัจจุบัน
System::SharedPtr<XpsPath> path2 = doc->Add(path1);

// เส้นทางที่ 1 และเส้นทางที่ 2 จะเหมือนกันทันทีที่ไม่ได้วางเส้นทางที่ 1 ไว้ในองค์ประกอบอื่นใด
// (ซึ่งหมายความว่า path1 ไม่มีองค์ประกอบหลัก)
// เนื่องจากสีของรูปสี่เหลี่ยมผืนผ้าบนหน้าจะเปลี่ยนเป็นสีเขียว
path2->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Green()));

// ตอนนี้เพิ่ม path2 อีกครั้ง ตอนนี้ path2 มีพาเรนต์ ดังนั้น path3 จะไม่เหมือนกับ path2
// จึงลงสีสี่เหลี่ยมผืนผ้าใหม่บนหน้ากระดาษ ...
System::SharedPtr<XpsPath> path3 = doc->Add(path2);
// ... และเราเลื่อนให้ต่ำลง 300 หน่วย ...
path3->set_RenderTransform(doc->CreateMatrix(1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 300.0f));
// ... และตั้งแปรงทึบสีแดงให้เต็ม
path3->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Red()));

// สร้าง path4 ใหม่ด้วยรูปทรงเรขาคณิตของ path2 ...
System::SharedPtr<XpsPath> path4 = doc->AddPath(path2->get_Data());
// ... เลื่อนไปทางขวา 300 หน่วย ...
path4->set_RenderTransform(doc->CreateMatrix(1.0f, 0.0f, 0.0f, 1.0f, 300.0f, 0.0f));
// ... และตั้งค่าการเติมทึบสีน้ำเงิน
path4->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Blue()));

// เพิ่ม path4 อีกครั้ง
System::SharedPtr<XpsPath> path5 = doc->Add(path4);
// path4 กับ path5 ไม่เหมือนกันอีกแล้ว...
// (ย้าย path5 ต่ำกว่า 300 หน่วย)
path5->set_RenderTransform(path5->get_RenderTransform()->Clone());
// เพื่อยกเลิกการเชื่อมต่อค่า RenderTransform จาก path4 (ดูความคิดเห็นถัดไปเกี่ยวกับคุณสมบัติการเติม)
path5->get_RenderTransform()->Translate(0.0f, 300.0f);
// ... แต่ถ้าเราตั้งค่าความทึบของคุณสมบัติการเติมจะมีผลกับทั้งเส้นทางที่ 5 และเส้นทางที่ 4
// เนื่องจากแปรงเป็นค่าคุณสมบัติที่ซับซ้อนซึ่งยังคงเหมือนเดิมสำหรับเส้นทางที่ 5 และเส้นทางที่ 4
path5->get_Fill()->set_Opacity(0.8f);

// สร้าง path6 ใหม่ด้วยรูปทรงเรขาคณิตของ path2 ...
System::SharedPtr<XpsPath> path6 = doc->AddPath(path2->get_Data());
// ... เลื่อนไปทางขวา 600 หน่วย ...
path6->set_RenderTransform(doc->CreateMatrix(1.0f, 0.0f, 0.0f, 1.0f, 600.0f, 0.0f));
// ... และตั้งค่าการเติมของแข็งสีเหลือง
path6->set_Fill(doc->CreateSolidColorBrush(System::Drawing::Color::get_Yellow()));

// ตอนนี้เพิ่มการโคลนของ path6 ...
System::SharedPtr<XpsPath> path7 = doc->Add(path6->Clone());
// (ย้าย path5 ต่ำกว่า 300 หน่วย)
path7->set_RenderTransform(path7->get_RenderTransform()->Clone());
path7->get_RenderTransform()->Translate(0.0f, 300.0f);
// ... และตั้งค่าความทึบสำหรับเส้นทาง 7
path7->get_Fill()->set_Opacity(0.8f);
// ตอนนี้ความทึบมีผลอย่างอิสระทันทีที่ค่าคุณสมบัติถูกโคลนพร้อมกับองค์ประกอบ

// บล็อกโค้ดต่อไปนี้เทียบเท่ากับบล็อกก่อนหน้า
// เพิ่ม path6 เอง เส้นทางที่ 6 และเส้นทางที่ 7 ไม่เหมือนกัน แม้ว่าค่าคุณสมบัติการเติมจะเหมือนกัน 
//XpsPath path7 = doc.Add (พาธ 6);
//path7.RenderTransform = path7.RenderTransform.Clone();
//เส้นทาง 7.RenderTransform.Translate(0, 300);
// ในการ "ยกเลิกการเชื่อมต่อ" คุณสมบัติการเติมของพาธ 7 จากคุณสมบัติการเติมของพาธ 6 กำหนดใหม่ให้กับการโคลน (หรือโคลนการเติมของพาธ 6)
//path7.Fill = ((XpsSolidColorBrush)path7.Fill).Clone();
//path7.Fill.Opacity = 0.8f;

// บันทึกเอกสาร XPS ที่เป็นผลลัพธ์
doc->Save(RunExamples::outDir() + u"WorkingWithTransparency_out.xps");

บทสรุป

โดยสรุป เราได้สำรวจคุณลักษณะต่างๆ มากมายเพื่อใช้งานกับไฟล์ XPS คุณสามารถเพิ่มการไล่ระดับสี เชิงเส้น แนวนอน หรือแนวตั้ง รวมทั้งเส้นกริดหรือวัตถุโปร่งใสในไฟล์ XPS นอกจากนี้ คุณสามารถดูคุณสมบัติอื่นๆ ได้โดยดาวน์โหลด ตัวอย่างโครงการ ในกรณีที่มีความคลุมเครือ โปรดอย่าลังเลที่จะเขียนถึงเราที่ ฟอรัมสนับสนุนฟรี เรารู้สึกเป็นเกียรติที่จะแนะนำคุณ!

ดูสิ่งนี้ด้วย