XPS 的代码画笔和渐变
用于处理 XPS 文件的画笔和渐变的 C++ API 解决方案。
Aspose.Page API Solution for C++ 为您提供了操作 XPS 文件矢量图形的能力。它可以让您创建具有不同颜色和纹理的各种几何形状。还可以了解有关 如何使用画笔 的 Aspose.Page 文档。
要操作 XPS 文件的画笔和渐变,我们需要:
Aspose.Page for C++ API 是一个功能丰富、功能强大且易于使用的 C++ 平台文档操作和转换 API。
你可以直接下载它的最新版本,打开NuGet包管理器,搜索Aspose.Page.Cpp并安装。您也可以从包管理器控制台使用以下命令。
Package Manager Console Command
PM> Install-Package Aspose.Page
使用 C++ 处理视觉画笔
Aspose.Page for C++ API 允许您使用几行代码将网格添加到您的 XPS 文件。可以对新文档和现有文档执行此操作。 XpsVisualBrush 类用于设置网格的属性,利用 XpsPathGeometry 和 XpsCanvas 对象。要将网格添加到 XPS 文档,您需要执行以下步骤:
- 使用 XpsDocument 类创建文档对象
- 创建一个 XpsPathGeometry 对象,并定义必要的段。
- 利用 XpsCanvas 类来设置渲染转换。
- 根据需要调整 Fill 和 Opacity 属性。
- 通过调用 Save() 方法保存文档。
将网格添加到视觉画笔的 C++ 代码
using Aspose::Page::XPS;
using Aspose::Page::XPS::XpsModel;
using System::Drawing;
// Create geometry for a 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));
// Create canvas for the 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->CreatePath(pathGeometry);
// Create a 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::DynamicCast<Aspose::Page::Xps::XpsModel::XpsVisualBrush>(gridPath->get_Fill()))->set_TileMode(Aspose::Page::Xps::XpsModel::XpsTileMode::Tile);
// Create a 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 a grid
canvas->AddPath(gridPath);
// Create a 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 the resultant XPS document
doc->Save(outDir() + u"AddGrid_out.xps");
使用 C++ 添加水平渐变。
Aspose.Page for C++ API 允许您使用几行代码将网格添加到您的 XPS 文件。可以对新文档和现有文档执行此操作。 XpsVisualBrush 类用于设置网格的属性,利用 XpsPathGeometry 和 XpsCanvas 对象。要将网格添加到 XPS 文档,您需要执行以下步骤:
- 使用 XpsDocument 类创建文档对象
- 创建一个 XpsPathGeometry 对象,并定义必要的段。
- 利用 XpsCanvas 类来设置渲染转换。
- 根据需要调整 Fill 和 Opacity 属性。
向 XPS 文件插入水平渐变的 C++ 代码
// Create new XPS Document
auto 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::DynamicCast<Aspose::Page::Xps::XpsModel::XpsGradientBrush>(path->get_Fill()))->get_GradientStops()->AddRange(stops);
// Save resultant XPS document
doc->Save(outDir() + u"AddHorizontalGradient_out.xps");
XPS 什么是XPS文件格式
XPS 格式类似于 PDF 格式。两者都是页面描述语言 (PDL) 格式。 EPS 基于 HTML 而不是 PostScript 语言。 .eps 文件能够包含文档结构的标记以及有关文档外观的信息。还添加了有关如何打印和呈现文档的说明。该格式的特点是它修复了文档的描述,这意味着无论谁以及从哪个操作系统打开它,它看起来都是一样的。