Daten in Nicht Primitive Formen mit C++
Zugriff auf Daten nicht-primitiver Form
Manchmal müssen Sie auf Daten aus einer Form zugreifen, die nicht eingebaut ist. Eingebaute Formen werden primitive Formen genannt; solche, die es nicht sind, werden nicht-primitive genannt. Sie können beispielsweise eigene Formen mit verschiedenen verbundenen Kurvenlinien definieren.
Eine nicht-primitive Form
In Aspose.Cells werden nicht-primitive Formen mit dem Typ AutoShapeType.NotPrimitive versehen. Sie können ihren Typ mithilfe der Eigenschaft Shape.AutoShapeType überprüfen.
Greifen Sie auf die Formdaten mithilfe der Eigenschaft Shape.GetPaths() zu. Es gibt alle verbundenen Pfade zurück, die die nicht-primitive Form bilden. Diese Pfade sind vom Typ ShapePath, der eine Liste aller Segmente enthält, die wiederum die Punkte in jedem Segment enthalten.
Zeigt ein Beispiel für eine nicht-primitive Form |
---|
![]() |
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Drawing;
int main()
{
Aspose::Cells::Startup();
// Source directory path
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
// Load the workbook
Workbook workbook(srcDir + u"NonPrimitiveShape.xlsx");
// Access the first worksheet
Worksheet worksheet = workbook.GetWorksheets().Get(0);
// Accessing the user defined shape
Shape shape = worksheet.GetShapes().Get(0);
if (shape.GetAutoShapeType() == AutoShapeType::NotPrimitive)
{
// Access shape's data
ShapePathCollection shapePathCollection = shape.GetPaths();
// Access information of individual path
for (int i = 0; i < shapePathCollection.GetCount(); ++i)
{
ShapePath shapePath = shapePathCollection.Get(i);
// Access path segment list
ShapeSegmentPathCollection pathSegments = shapePath.GetPathSegementList();
// Access individual path segment
for (int j = 0; j < pathSegments.GetCount(); ++j)
{
ShapeSegmentPath pathSegment = pathSegments.Get(j);
// Gets the points in path segment
ShapePathPointCollection segmentPoints = pathSegment.GetPoints();
for (int k = 0; k < segmentPoints.GetCount(); ++k)
{
ShapePathPoint pathPoint = segmentPoints.Get(k);
std::cout << "X: " << pathPoint.GetX() << ", Y: " << pathPoint.GetY() << std::endl;
}
}
}
}
Aspose::Cells::Cleanup();
return 0;
}