Come aggiungere forme a PowerPoint in .NET

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.Foss

Verifica 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.


Vedi anche

 Italiano