Come aggiungere forme a PowerPoint in .NET
Aspose.Slides FOSS for .NET supporta l’aggiunta di AutoShapes, Tables, Connectors e PictureFrames alle diapositive della presentazione. Tutti i tipi di forma vengono aggiunti tramite la collezione slide.Shapes.
Guida passo-passo
Passo 1: Installa il pacchetto
dotnet add package Aspose.Slides.FossVerifica l’installazione:
using Aspose.Slides.Foss;
Console.WriteLine("Ready");Passo 2: Crea una presentazione
Usa sempre Presentation con una dichiarazione using.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
// ... add shapes ...
prs.Save("output.pptx", SaveFormat.Pptx);Passo 3: Aggiungi una AutoShape
slide.Shapes.AddAutoShape(shapeType, x, y, width, height) posiziona una forma nella posizione e dimensione specificate (tutte in punti). Usa le costanti ShapeType per selezionare la forma.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
// Rectangle
var rect = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 300, 100);
rect.AddTextFrame("Rectangle shape");
// Ellipse
var ellipse = slide.Shapes.AddAutoShape(ShapeType.Ellipse, 400, 50, 200, 100);
ellipse.AddTextFrame("Ellipse shape");
prs.Save("autoshapes.pptx", SaveFormat.Pptx);Passo 4: Aggiungi una tabella
slide.Shapes.AddTable(x, y, columnWidths, rowHeights) crea una tabella nella posizione specificata. Le larghezze delle colonne e le altezze delle righe sono array di valori in punti.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
var colWidths = new double[] { 150.0, 150.0, 150.0 };
var rowHeights = new double[] { 40.0, 40.0, 40.0 };
var table = slide.Shapes.AddTable(50, 200, colWidths, rowHeights);
// Set header row text
string[] headers = { "Product", "Units", "Revenue" };
for (int col = 0; col < headers.Length; col++)
table.Rows[0][col].TextFrame.Text = headers[col];
// Set data rows
string[][] rows = {
new[] { "Widget A", "120", "$2,400" },
new[] { "Widget B", "85", "$1,700" },
};
for (int rowIdx = 0; rowIdx < rows.Length; rowIdx++)
for (int col = 0; col < rows[rowIdx].Length; col++)
table.Rows[rowIdx + 1][col].TextFrame.Text = rows[rowIdx][col];
prs.Save("table.pptx", SaveFormat.Pptx);Passo 5: Aggiungi un connettore
I connettori collegano visivamente due forme. Crea prima le forme, quindi aggiungi un connettore e imposta i punti di connessione di inizio e fine.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
var box1 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 100, 150, 60);
box1.AddTextFrame("Start");
var box2 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 350, 100, 150, 60);
box2.AddTextFrame("End");
var conn = slide.Shapes.AddConnector(ShapeType.BentConnector3, 0, 0, 10, 10);
conn.StartShapeConnectedTo = box1;
conn.StartShapeConnectionSiteIndex = 3; // right side of box1
conn.EndShapeConnectedTo = box2;
conn.EndShapeConnectionSiteIndex = 1; // left side of box2
prs.Save("connector.pptx", SaveFormat.Pptx);Gli indici dei punti di connessione sono numerati da 0 a 3 per un rettangolo: top=0, left=1, bottom=2, right=3.
Passo 6: Aggiungi una cornice.
Incorpora un’immagine e aggiungila alla diapositiva come PictureFrame. Leggi prima i byte dell’immagine, aggiungili alla raccolta di immagini della presentazione, quindi crea il frame.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
byte[] imageData = File.ReadAllBytes("logo.png");
var image = prs.Images.AddImage(imageData);
var slide = prs.Slides[0];
slide.Shapes.AddPictureFrame(
ShapeType.Rectangle, // bounding shape type
50, 50, // x, y in points
200, 150, // width, height in points
image
);
prs.Save("with-image.pptx", SaveFormat.Pptx);Problemi comuni e soluzioni
La forma appare al di fuori dell’area visibile della diapositiva
Le diapositive sono 720 × 540 punti per impostazione predefinita. I valori di x o y al di fuori di questi limiti posizionano la forma fuori dalla diapositiva. Mantieni x < 720 e y < 540, e assicurati x + width <= 720 e y + height <= 540.
NullReferenceException durante l’accesso a TextFrame
AddAutoShape() restituisce direttamente l’oggetto shape. Se vedi null, verifica di non scartare il valore restituito.
Il testo della cella della tabella è vuoto dopo l’assegnazione
La proprietà corretta è .TextFrame.Text (non .Text direttamente sulla cella). Accedi alle celle come table.Rows[rowIndex][colIndex].TextFrame.Text = "value".
Domande frequenti
Quante forme posso aggiungere a una diapositiva?
Non esiste un limite imposto dalla libreria. I limiti pratici dipendono dalla dimensione del file e dalla capacità di rendering del visualizzatore PPTX di destinazione.
Posso modificare la posizione di una forma dopo averla aggiunta?
Sì. L’oggetto shape restituito da AddAutoShape() ha le proprietà X, Y, Width e Height che è possibile impostare:
shape.X = 100;
shape.Y = 200;
shape.Width = 400;
shape.Height = 80;Posso impostare il colore del contorno (bordo) della forma?
Sì, tramite shape.LineFormat:
using Aspose.Slides.Foss.Drawing;
shape.LineFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 200, 0, 0);I grafici sono supportati?
No. I grafici, SmartArt e gli oggetti OLE non sono implementati in questa edizione.