Cum să adăugați forme în PowerPoint în .NET
Aspose.Slides FOSS for .NET acceptă adăugarea AutoShapes, Tables, Connectors și PictureFrames la diapozitivele prezentării. Toate tipurile de forme sunt adăugate prin colecția slide.Shapes.
Ghid pas cu pas
Pasul 1: Instalați pachetul
dotnet add package Aspose.Slides.FossVerificați instalarea:
using Aspose.Slides.Foss;
Console.WriteLine("Ready");Pasul 2: Creaţi o prezentare
Folosiți întotdeauna Presentation cu o declarație 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);Pasul 3: Adăugați o AutoShape
slide.Shapes.AddAutoShape(shapeType, x, y, width, height) plasează o formă la poziția și dimensiunea date (toate în puncte). Folosiți constantele ShapeType pentru a selecta 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);Pasul 4: Adaugă un tabel
slide.Shapes.AddTable(x, y, columnWidths, rowHeights) creează un tabel la poziția specificată. Lățimile coloanelor și înălțimile rândurilor sunt array-uri de valori în puncte.
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);Pasul 5: Adaugă un Conector
Conectorii leagă vizual două forme. Creați formele mai întâi, apoi adăugați un conector și setați punctele de conexiune de început și de sfârșit.
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);Indiciile locațiilor de conectare sunt numerotate 0‑3 pentru un dreptunghi: top=0, left=1, bottom=2, right=3.
Pasul 6: Adaugă un cadru foto
Încorporează o imagine și adaugă‑o pe diapozitiv ca un PictureFrame. Citește mai întâi octeții imaginii, adaugă-i în colecția de imagini a prezentării, apoi creează cadrul.
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);Probleme comune și soluții
Forma apare în afara zonei vizibile a diapozitivului
Diapozitivele sunt de 720 × 540 de puncte în mod implicit. Valorile x sau y dincolo de aceste limite plasează forma în afara diapozitivului. Păstraţi x < 720 și y < 540 și asiguraţi x + width <= 720 și y + height <= 540.
NullReferenceException când accesați TextFrame
AddAutoShape() returnează direct obiectul shape. Dacă vedeți null, verificați că nu renunțați la valoarea returnată.
Textul celulei din tabel este gol după atribuire
Proprietatea corectă este .TextFrame.Text (nu .Text direct pe celulă). Accesați celulele ca table.Rows[rowIndex][colIndex].TextFrame.Text = "value".
Întrebări frecvente
Câte forme pot adăuga pe un diapozitiv?
Nu există o limită impusă de bibliotecă. Limitele practice depind de dimensiunea fișierului și de capacitatea de redare a vizualizatorului PPTX țintă.
Pot să schimb poziția unei forme după ce am adăugat-o?
Da. Obiectul shape returnat de AddAutoShape() are proprietățile X, Y, Width și Height pe care le puteți seta:
shape.X = 100;
shape.Y = 200;
shape.Width = 400;
shape.Height = 80;Pot să setez culoarea conturului (bordurii) formei?
Da, prin shape.LineFormat:
using Aspose.Slides.Foss.Drawing;
shape.LineFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 200, 0, 0);Sunt graficele acceptate?
Nu. Graficele, SmartArt și obiectele OLE nu sunt implementate în această ediție.