Jak přidat tvary do PowerPointu v .NET
Aspose.Slides FOSS for .NET podporuje přidávání AutoShapes, Tables, Connectors a PictureFrames do snímků prezentace. Všechny typy tvarů jsou přidávány prostřednictvím kolekce slide.Shapes.
Průvodce krok za krokem
Krok 1: Nainstalujte balíček
dotnet add package Aspose.Slides.FossOvěřte instalaci:
using Aspose.Slides.Foss;
Console.WriteLine("Ready");Krok 2: Vytvořit prezentaci
Vždy používejte Presentation s using výrokem.
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: Přidat AutoShape
slide.Shapes.AddAutoShape(shapeType, x, y, width, height) umístí tvar na zadanou pozici a velikost (vše v bodech). Použijte konstanty ShapeType k výběru tvaru.
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: Přidat tabulku
slide.Shapes.AddTable(x, y, columnWidths, rowHeights) vytvoří tabulku na zadané pozici. Šířky sloupců a výšky řádků jsou pole hodnot v bodech.
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: Přidat konektor
Spojnice vizuálně propojují dva tvary. Nejprve vytvořte tvary, poté přidejte spojnici a nastavte její počáteční a koncové připojovací body.
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);Indexy připojovacích míst jsou očíslovány 0‑3 pro obdélník: horní=0, levý=1, dolní=2, pravý=3.
Krok 6: Přidat rám obrázku
Vložte obrázek a přidejte jej do snímku jako PictureFrame. Nejprve načtěte bajty obrázku, přidejte je do kolekce obrázků prezentace a poté vytvořte rámec.
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);Běžné problémy a opravy
Tvar se zobrazuje mimo viditelnou oblast snímku
Snímky mají ve výchozím nastavení rozměry 720 × 540 bodů. Hodnoty x nebo y mimo tyto hranice umístí tvar mimo snímek. Zachovejte x < 720 a y < 540 a zajistěte x + width <= 720 a y + height <= 540.
NullReferenceException při přístupu k TextFrame
AddAutoShape() vrací objekt tvaru přímo. Pokud vidíte null, zkontrolujte, že neodhazujete návratovou hodnotu.
Text buňky tabulky je po přiřazení prázdný
Správná vlastnost je .TextFrame.Text (ne .Text přímo na buňce). Přistupujte k buňkám jako table.Rows[rowIndex][colIndex].TextFrame.Text = "value".
Často kladené otázky
Kolik tvarů mohu přidat na snímek?
Neexistuje žádné omezení uložené knihovnou. Praktická omezení závisí na velikosti souboru a na schopnosti vykreslování vašeho cílového prohlížeče PPTX.
Mohu změnit pozici tvaru po jeho přidání?
Ano. Objekt tvaru vrácený AddAutoShape() má vlastnosti X, Y, Width a Height, které můžete nastavit:
shape.X = 100;
shape.Y = 200;
shape.Width = 400;
shape.Height = 80;Mohu nastavit barvu obrysu (okraje) tvaru?
Ano, přes shape.LineFormat:
using Aspose.Slides.Foss.Drawing;
shape.LineFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 200, 0, 0);Jsou grafy podporovány?
Ne. Grafy, SmartArt a OLE objekty nejsou v této edici implementovány.