So fügen Sie Formen zu PowerPoint in .NET hinzu

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

Installation ü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.


Siehe auch

 Deutsch