Com afegir formes a PowerPoint a .NET

Com afegir formes a PowerPoint a .NET

Aspose.Slides FOSS for .NET admet afegir AutoShapes, Tables, Connectors i PictureFrames a les diapositives de presentació. Tots els tipus de forma s’afegeixen a través de la col·lecció slide.Shapes.

Guia pas a pas

Pas 1: Instal·la el paquet

dotnet add package Aspose.Slides.Foss

Verifiqueu la instal·lació:

using Aspose.Slides.Foss;
Console.WriteLine("Ready");

Pas 2: Crea una presentació

Sempre utilitzeu Presentation amb una declaració 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);

Pas 3: Afegeix una AutoShape

slide.Shapes.AddAutoShape(shapeType, x, y, width, height) col·loca una forma a la posició i mida indicades (totes en punts). Utilitzeu les constants ShapeType per seleccionar 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);

Pas 4: Afegeix una taula

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) crea una taula a la posició especificada. Les amplades de les columnes i les alçades de les files són matrius de valors en punts.

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);

Pas 5: Afegeix un connector

Els connectors enllacen visualment dues formes. Creeu primer les formes, després afegiu un connector i establiu els seus punts de connexió d’inici i final.

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);

Els índexs dels punts de connexió es numeren del 0 al 3 per a un rectangle: superior=0, esquerre=1, inferior=2, dret=3.


Pas 6: Afegeix un marc de foto

Incrusteu una imatge i afegiu-la a la diapositiva com a PictureFrame. Llegiu primer els bytes de la imatge, afegiu-los a la col·lecció d’imatges de la presentació i, a continuació, creeu el marc.

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);

Problemes comuns i solucions

La forma apareix fora de l’àrea visible de la diapositiva

Les diapositives són de 720 × 540 punts per defecte. Els valors de x o y fora d’aquests límits col·loquen la forma fora de la diapositiva. Mantingueu x < 720 i y < 540, i assegureu x + width <= 720 i y + height <= 540.

NullReferenceException en accedir a TextFrame

AddAutoShape() retorna l’objecte shape directament. Si veus null, comprova que no estàs descartant el valor de retorn.

El text de la cel·la de la taula és buit després de l’assignació

La propietat correcta és .TextFrame.Text (no .Text directament a la cel·la). Accediu a les cel·les com table.Rows[rowIndex][colIndex].TextFrame.Text = "value".


Preguntes freqüents

Quantes formes puc afegir a una diapositiva?

No hi ha cap límit imposat per la biblioteca. Els límits pràctics depenen de la mida del fitxer i de la capacitat de renderització del visualitzador PPTX de destinació.

Puc canviar la posició d’una forma després d’afegir-la?

Sí. L’objecte shape retornat per AddAutoShape() té les propietats X, Y, Width i Height que podeu establir:

shape.X = 100;
shape.Y = 200;
shape.Width = 400;
shape.Height = 80;

Puc establir el color del contorn (bord) de la forma?

Sí, via shape.LineFormat:

using Aspose.Slides.Foss.Drawing;
shape.LineFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 200, 0, 0);

S’admeten els gràfics?

No. Els gràfics, SmartArt i els objectes OLE no s’implementen en aquesta edició.


Vegeu també

 Català