Pinceles (brushes) de código y degradados de XPS
Solución de API de C++ para trabajar con pinceles y degradados de archivos XPS.
La solución Aspose.Page API para C++ le brinda la capacidad de manipular los gráficos vectoriales (vector graphics) de los archivos XPS. Le permite crear varias formas geométricas con diferentes colores y texturas. Conozca también la documentación de Aspose.Page sobre cómo trabajar con pinceles .
Para manipular pinceles y degradados de archivos XPS, necesitamos:
Aspose.Page para C++ API, que es una API de manipulación y conversión de documentos rica en características, poderosa y fácil de usar para la plataforma C++.
Puede descargar su última versión directamente, simplemente abra el administrador de paquetes NuGet (NuGet package manager), busque Aspose.Page.Cpp e instálelo. También puede utilizar el siguiente comando desde la Consola del Administrador de Paquetes (Package Manager Console).
Package Manager Console Command
PM> Install-Package Aspose.Page.Cpp
Trabajar con pinceles visuales (visual brushes) con C++
La API de Aspose.Page para C++ le permite agregar una cuadrícula (grid) a sus archivos XPS utilizando unas pocas líneas de código. Esto se puede hacer tanto para documentos nuevos como existentes. La clase XpsVisualBrush se utiliza para establecer las propiedades de la cuadrícula, utilizando objetos XpsPathGeometry y XpsCanvas . Para agregar una cuadrícula a su documento XPS, deberá seguir estos pasos:
- Usando la clase XpsDocument , cree un objeto Document
- Cree un objeto XpsPathGeometry con los segmentos (segments) necesarios definidos.
- Utilice la clase XpsCanvas para establecer la transformación de renderizado (rendering transformation).
- Ajuste las propiedades de relleno (Fill) y opacidad (Opacity) como desee.
- Guarde el documento llamando al Método Save().
Namespaces in use
using Aspose::Page::XPS;
using Aspose::Page::XPS::XpsModel;
using System::Drawing;
Usar el pincel visual (visual brush) para crear una cuadrícula
// 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");
Agregar un degradado horizontal (horizontal gradient) con C++.
La solución API de Aspose.Page para C++ le permite agregar diferentes tipos de degradados a sus documentos XPS utilizando la Clase XpsGradientBrush . Esta clase se utiliza para especificar la información XpsGradientStop y XpsPath en el objeto XpsDocument que representa el archivo XPS. Aquí hay un ejemplo de cómo hacer esto:
- Inicialice un objeto XpsDocument.
- Defina los parámetros XpsGradientStop y XpsPath para el documento XPS.
- Establezca la información de renderizado (rendering information).
- Guarde el documento utilizando el método Save().
Insertar un degradado horizontal en un 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 Qué es XPS Formato de archivo
XPS (XML Paper Specification) es el equivalente de Microsoft a PDF. Se basa en XML/HTML, mantiene el diseño en distintas plataformas y es independiente del sistema operativo.