Datos en formas no primitivas con C++
Contents
[
Hide
]
Acceso a datos de forma no primitiva
A veces, necesitas acceder a datos de una forma que no está incorporada. Las formas incorporadas se llaman formas primitivas; las que no lo son se llaman no primitivas. Por ejemplo, puedes definir tus propias formas usando diferentes líneas conectadas curvas.
Una forma no primitiva
En Aspose.Cells, a las formas no primitivas se les asigna el tipo AutoShapeType.NotPrimitive. Puede verificar su tipo utilizando la propiedad Shape.AutoShapeType.
Acceda a los datos de la forma utilizando la propiedad Shape.GetPaths(). Devuelve todos los caminos conectados que componen la forma no primitiva. Estos caminos son del tipo ShapePath que contiene una lista de todos los segmentos que a su vez contienen los puntos en cada segmento.
Muestra un ejemplo de una forma no primitiva |
---|
![]() |
#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;
}