Change Adjustment Values of the Shape with C++
Aspose.Cells provides Shape.Geometry.GetShapeAdjustValues property to make changes to the adjustment points with shapes. In the Microsoft Excel UI, adjustments display as yellow diamond nodes. For example:
- Rounded Rectangle has an adjustment to change the arc
- Triangle has an adjustment to change the location of the point
- Trapezoid has an adjustment to change the width of the top
- Arrows have two adjustments to change the shape of the head and tail
This article will explain the use of Shape.Geometry.GetShapeAdjustValues property to change the adjustment value of the different shapes.
Change Adjustment Values
The below code sample shows how to change adjustment values of the shape.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-C
// Source directory path
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
// Output directory path
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Create workbook object from source excel file
U16String inputFilePath = srcDir + u"source.xlsx";
Workbook workbook(inputFilePath);
// Access first worksheet
Worksheet worksheet = workbook.GetWorksheets().Get(0);
// Access first three shapes of the worksheet
Shape shape1 = worksheet.GetShapes().Get(0);
Shape shape2 = worksheet.GetShapes().Get(1);
Shape shape3 = worksheet.GetShapes().Get(2);
// Change the adjustment values of the shapes
shape1.GetGeometry().GetShapeAdjustValues().Get(0).SetValue(0.5);
shape2.GetGeometry().GetShapeAdjustValues().Get(0).SetValue(0.8);
shape3.GetGeometry().GetShapeAdjustValues().Get(0).SetValue(0.5);
// Save the workbook
workbook.Save(outDir + u"output_out.xlsx");
std::cout << "Workbook saved successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
How to set or change the RoundedRectangularCallout tip point in excel
The following code example shows how to set or change a rounded rectangle callout tip point position in Excel.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// File path for saving the workbook
U16String filePath(u"");
// Create a new workbook
Workbook workbook;
Worksheet sheet = workbook.GetWorksheets().Get(0);
// Add a RoundedRectangularCallout to the worksheet
Shape polygonShape = sheet.GetShapes().AddAutoShape(AutoShapeType::RoundedRectangularCallout, 0, 0, 0, 0, 0, 0);
polygonShape.SetY(200); // Shape Top properties
polygonShape.SetX(500); // Shape Left properties
polygonShape.SetWidth(200); // Shape Width
polygonShape.SetHeight(100); // Shape Height
ShapeGuideCollection shapeGuides = polygonShape.GetGeometry().GetShapeAdjustValues();
shapeGuides.Add(u"adj1", 1.02167); // The distance between the tip point and the center point
shapeGuides.Add(u"adj2", -0.295); // The distance between the tip point and the center point
shapeGuides.Add(u"adj3", 0.16667); // Usually the default value
// Save the workbook
workbook.Save(filePath + u"res.xlsx", SaveFormat::Xlsx);
// Read a new workbook
workbook = Workbook(filePath + u"res.xlsx");
sheet = workbook.GetWorksheets().Get(0);
// Get a RoundedRectangularCallout from the worksheet
polygonShape = sheet.GetShapes().Get(0);
shapeGuides = polygonShape.GetGeometry().GetShapeAdjustValues();
shapeGuides.Get(0).SetValue(0.7); // Modify the first shape guide value
// Save the workbook again
workbook.Save(filePath + u"res-resave.xlsx", SaveFormat::Xlsx);
Aspose::Cells::Cleanup();
}