So fügen Sie Formen zu PowerPoint in .NET hinzu
Aspose.Slides FOSS for .NET unterstützt das Hinzufügen von AutoShapes, Tables, Connectors und PictureFrames zu Präsentationsfolien. Alle Formtypen werden über die slide.Shapes-Sammlung hinzugefügt.
Schritt-für-Schritt-Anleitung
Schritt 1: Paket installieren
dotnet add package Aspose.Slides.FossInstallation überprüfen:
using Aspose.Slides.Foss;
Console.WriteLine("Ready");Schritt 2: Präsentation erstellen
Verwenden Sie immer Presentation mit einer using-Anweisung.
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);Schritt 3: AutoShape hinzufügen
slide.Shapes.AddAutoShape(shapeType, x, y, width, height) platziert eine Form an der angegebenen Position und Größe (alle in Punkten). Verwenden Sie ShapeType Konstanten, um die Form auszuwählen.
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);Schritt 4: Tabelle hinzufügen
slide.Shapes.AddTable(x, y, columnWidths, rowHeights) erstellt eine Tabelle an der angegebenen Position. Spaltenbreiten und Zeilenhöhen sind Arrays von Punktwerten.
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);Schritt 5: Connector hinzufügen
Verbinder verknüpfen zwei Formen visuell. Erstellen Sie zuerst die Formen, fügen Sie dann einen Verbinder hinzu und setzen Sie dessen Start‑ und Endanschlusspunkte.
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);Verbindungsstellen-Indizes werden für ein Rechteck von 0‑3 nummeriert: oben=0, links=1, unten=2, rechts=3.
Schritt 6: Bildrahmen hinzufügen
Betten Sie ein Bild ein und fügen Sie es der Folie als PictureFrame hinzu. Lesen Sie zunächst die Bildbytes, fügen Sie sie der Bildsammlung der Präsentation hinzu und erstellen Sie dann den Rahmen.
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);Häufige Probleme und Lösungen
Form erscheint außerhalb des sichtbaren Folienbereichs
Folien haben standardmäßig 720 × 540 Punkte. Werte von x oder y, die diese Grenzen überschreiten, platzieren die Form außerhalb der Folie. Behalte x < 720 und y < 540 und stelle sicher, dass x + width <= 720 und y + height <= 540.
NullReferenceException beim Zugriff auf TextFrame
AddAutoShape() gibt das Shape-Objekt direkt zurück. Wenn Sie null sehen, prüfen Sie, dass Sie den Rückgabewert nicht verwerfen.
Tabellenzellen-Text ist nach Zuweisung leer
Die korrekte Eigenschaft ist .TextFrame.Text (nicht .Text direkt auf der Zelle). Greifen Sie auf Zellen zu als table.Rows[rowIndex][colIndex].TextFrame.Text = "value".
Häufig gestellte Fragen
Wie viele Formen kann ich zu einer Folie hinzufügen?
Es gibt keine von der Bibliothek auferlegte Grenze. Praktische Grenzen hängen von der Dateigröße und der Rendering‑Fähigkeit Ihres Ziel‑PPTX‑Viewers ab.
Kann ich die Position einer Form ändern, nachdem ich sie hinzugefügt habe?
Ja. Das von AddAutoShape() zurückgegebene Shape‑Objekt verfügt über die Eigenschaften X, Y, Width und Height, die Sie festlegen können:
shape.X = 100;
shape.Y = 200;
shape.Width = 400;
shape.Height = 80;Kann ich die Farbe der Formkontur (Rand) festlegen?
Ja, über shape.LineFormat:
using Aspose.Slides.Foss.Drawing;
shape.LineFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 200, 0, 0);Werden Diagramme unterstützt?
Nein. Diagramme, SmartArt und OLE-Objekte sind in dieser Ausgabe nicht implementiert.