Data i icke Primär Form med C++
Contents
[
Hide
]
Åtkomst till data av icke-primitiv form
Ibland behöver du få åtkomst till data från en form som inte är inbyggd. Inbyggda former kallas primitiva former; de som inte är det kallas icke-primitiva. Till exempel kan du definiera dina egna former med olika kurvanslutna linjer.
En icke-primitiv form
I Aspose.Cells tilldelas icke-primitiva former typen AutoShapeType.NotPrimitive. Du kan kontrollera deras typ med hjälp av egenskapen Shape.AutoShapeType.
Åtkomst till formdata med användning av egenskapen Shape.GetPaths(). Den returnerar alla de anslutna vägarna som utgör den icke-primitiva formen. Dessa vägar är av typen ShapePath som håller en lista över alla segment som i sin tur innehåller punkterna i varje segment.
Visar ett exempel på en icke-primitiv 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;
}