Hur man lägger till former i PowerPoint i .NET

Hur man lägger till former i PowerPoint i .NET

Aspose.Slides FOSS för .NET stöder att lägga till AutoShapes, Tables, Connectors och PictureFrames till presentationsbilder. Alla formtyper läggs till genom slide.Shapes-samlingen.

Steg-för-steg-guide

Steg 1: Installera paketet

dotnet add package Aspose.Slides.Foss

Verifiera installationen:

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

Steg 2: Skapa en presentation

Använd alltid Presentation med ett using‑uttalande.

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

Steg 3: Lägg till en AutoShape

slide.Shapes.AddAutoShape(shapeType, x, y, width, height) placerar en form på den angivna positionen och storleken (alla i punkter). Använd ShapeType‑konstanter för att välja formen.

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

Steg 4: Lägg till en tabell

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) skapar en tabell på den angivna positionen. Kolumnbredder och radhöjder är arrayer av punktvärden.

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

Steg 5: Lägg till en anslutning

Kopplingar länkar två former visuellt. Skapa formerna först, lägg sedan till en koppling och ange dess start- och slutanslutningspunkter.

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

Anslutningsplatsindex är numrerade 0-3 för en rektangel: top=0, left=1, bottom=2, right=3.


Steg 6: Lägg till en bildram

Bädda in en bild och lägg till den på bilden som en PictureFrame. Läs först bildens byte, lägg till dem i presentationens bildsamling och skapa sedan ramen.

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

Vanliga problem och lösningar

Formen visas utanför det synliga bildområdet

Bilder är som standard 720 × 540 punkter. Värden för x eller y utanför dessa gränser placerar formen utanför bilden. Behåll x < 720 och y < 540, och säkerställ x + width <= 720 och y + height <= 540.

NullReferenceException vid åtkomst av TextFrame

AddAutoShape() returnerar shape‑objektet direkt. Om du ser null, kontrollera att du inte kastar bort returvärdet.

Tabellcellens text är tom efter tilldelning

Den korrekta egenskapen är .TextFrame.Text (inte .Text direkt på cellen). Åtkomst till celler som table.Rows[rowIndex][colIndex].TextFrame.Text = "value".


Vanliga frågor

Hur många former kan jag lägga till på en bild?

Det finns ingen begränsning som påläggs av biblioteket. Praktiska begränsningar beror på filstorlek och renderingskapaciteten hos din mål‑PPTX‑visare.

Kan jag ändra en formens position efter att ha lagt till den?

Ja. Shape‑objektet som returneras av AddAutoShape() har X, Y, Width och Height egenskaper som du kan ställa in:

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

Kan jag ange färgen på formens kontur (kant)?

Ja, via shape.LineFormat:

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

Är diagram stödda?

Nej. Diagram, SmartArt och OLE‑objekt är inte implementerade i den här utgåvan.


Se även

 Svenska