Jak dodać kształty do PowerPoint w .NET

Jak dodać kształty do PowerPoint w .NET

Aspose.Slides FOSS for .NET obsługuje dodawanie AutoShapes, Tables, Connectors i PictureFrames do slajdów prezentacji. Wszystkie typy kształtów są dodawane poprzez kolekcję slide.Shapes.

Przewodnik krok po kroku

Krok 1: Zainstaluj pakiet

dotnet add package Aspose.Slides.Foss

Sprawdź instalację:

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

Krok 2: Utwórz prezentację

Zawsze używaj Presentation z oświadczeniem 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);

Krok 3: Dodaj AutoShape

slide.Shapes.AddAutoShape(shapeType, x, y, width, height) umieszcza kształt w podanej pozycji i rozmiarze (wszystko w punktach). Użyj stałych ShapeType, aby wybrać kształt.

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

Krok 4: Dodaj tabelę

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) tworzy tabelę w określonej pozycji. Szerokości kolumn i wysokości wierszy są tablicami wartości w punktach.

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

Krok 5: Dodaj łącznik

Łączniki łączą dwa kształty wizualnie. Najpierw utwórz kształty, a następnie dodaj łącznik i ustaw jego punkty początkowe i końcowe.

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

Indeksy miejsc połączeń są numerowane od 0 do 3 dla prostokąta: góra=0, lewo=1, dół=2, prawo=3.


Krok 6: Dodaj ramkę obrazu

Osadź obraz i dodaj go do slajdu jako PictureFrame. Najpierw odczytaj bajty obrazu, dodaj je do kolekcji obrazów prezentacji, a następnie utwórz ramkę.

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

Typowe problemy i rozwiązania

Kształt pojawia się poza widocznym obszarem slajdu

Slajdy mają domyślnie wymiary 720 × 540 punktów. Wartości x lub y poza tymi granicami umieszczają kształt poza slajdem. Zachowaj x < 720 i y < 540 oraz zapewnij x + width <= 720 i y + height <= 540.

NullReferenceException podczas uzyskiwania dostępu TextFrame

AddAutoShape() zwraca obiekt kształtu bezpośrednio. Jeśli widzisz null, sprawdź, czy nie odrzucasz zwracanej wartości.

Tekst komórki tabeli jest pusty po przypisaniu

Poprawną właściwością jest .TextFrame.Text (nie .Text bezpośrednio na komórce). Dostęp do komórek uzyskuje się jako table.Rows[rowIndex][colIndex].TextFrame.Text = "value".


Często zadawane pytania

Ile kształtów mogę dodać do slajdu?

Nie ma ograniczenia narzuconego przez bibliotekę. Praktyczne limity zależą od rozmiaru pliku i możliwości renderowania Twojego docelowego podglądu PPTX.

Czy mogę zmienić pozycję kształtu po jego dodaniu?

Tak. Obiekt shape zwrócony przez AddAutoShape() ma właściwości X, Y, Width i Height, które możesz ustawić:

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

Czy mogę ustawić kolor obrysu (ramki) kształtu?

Tak, przez shape.LineFormat:

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

Czy wykresy są obsługiwane?

Nie. Wykresy, SmartArt i obiekty OLE nie są zaimplementowane w tej edycji.


Zobacz także

 Polski