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.FossSprawdź 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.