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.FossVerifiqueu 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ó.