Kodekan kuas dan gradien XPS
Solusi API C++ untuk bekerja dengan brush dan gradien file XPS.
Solusi Aspose.Page API untuk C++ memberi Anda kemampuan untuk memanipulasi grafik vektor (vector graphics) dari file XPS. Ini memungkinkan Anda membuat berbagai bentuk geometris dengan warna dan tekstur yang berbeda. Pelajari juga dokumentasi Aspose.Page tentang cara bekerja dengan brushes .
Untuk memanipulasi brushes dan gradients file XPS, kita memerlukan:
Aspose.Page untuk C++ API, yang mana merupakan API manipulasi dan konversi dokumen yang kaya fitur, canggih, dan mudah digunakan untuk platform C++.
Anda dapat mendownload versi terbarunya secara langsung, cukup buka pengelola paket NuGet (NuGet package manager), cari Aspose.Page.Cpp dan instal. Anda juga dapat menggunakan perintah berikut dari Package Manager Console.
Package Manager Console Command
PM> Install-Package Aspose.Page.Cpp
Bekerja dengan visual brushes dengan C++
API Aspose.Page untuk C++ memungkinkan Anda menambahkan grid ke file XPS Anda menggunakan beberapa baris kode. Hal ini dapat dilakukan baik untuk dokumen baru maupun yang sudah ada. Kelas XpsVisualBrush digunakan untuk mengatur properti dari grid, memanfaatkan objek XpsPathGeometry dan XpsCanvas . Untuk menambahkan kisi ke dokumen XPS Anda, Anda perlu mengikuti langkah-langkah berikut:
- Gunakan Kelas XpsDocument buat objek Document
- Buat objek XpsPathGeometry dengan menetapkan segmen-segmen yang telah ditentukan.
- Manfaatkan Kelas XpsCanvas untuk mengatur transformasi rendering (rendering transformation).
- Sesuaikan properti Fill dan Opacity sesuai keinginan.
- Simpan dokumen dengan memanggil Metode Save().
Namespaces in use
using Aspose::Page::XPS;
using Aspose::Page::XPS::XpsModel;
using System::Drawing;
Menggunakan visual brush untuk membuat 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");
Tambahkan gradien horizontal (horizontal gradient) dengan C++.
Solusi API Aspose.Page untuk C++ memungkinkan Anda menambahkan berbagai jenis gradien ke dokumen XPS Anda dengan menggunakan Kelas XpsGradientBrush . Kelas ini digunakan untuk menentukan informasi XpsGradientStop dan XpsPath ke objek XpsDocument yang merepresentasikan file XPS. Berikut ini adalah contoh cara melakukannya:
- Lakukan Inisialisasi pada objek XpsDocument.
- Tentukan parameter XpsGradientStop dan XpsPath untuk dokumen XPS.
- Atur informasi rendering.
- Simpan dokumen dengan menggunakan Metode Save().
Menyisipkan horizontal gradient pada sebuah 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 Apa itu Format File XPS
XPS (XML Paper Specification) adalah alternatif Microsoft untuk PDF. Berdasarkan XML/HTML, menjaga tata letak di berbagai platform dan bersifat independen sistem operasi.