Hogyan adjunk hozzá alakzatokat a PowerPoint-hoz .NET-ben

Hogyan adjunk hozzá alakzatokat a PowerPoint-hoz .NET-ben

Aspose.Slides FOSS for .NET támogatja az AutoShapes, Tables, Connectors és PictureFrames hozzáadását a bemutató diákhoz. Minden alakzat típust a slide.Shapes gyűjteményen keresztül adhatunk hozzá.

Lépésről‑lépésre útmutató

1. lépés: A csomag telepítése

dotnet add package Aspose.Slides.Foss

Ellenőrizze a telepítést:

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

2. lépés: Prezentáció létrehozása

Mindig használja a Presentation-t egy using nyilatkozattal.

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

3. lépés: AutoShape hozzáadása

slide.Shapes.AddAutoShape(shapeType, x, y, width, height) elhelyez egy alakzatot a megadott pozícióban és méretben (mind pontban). Használja a ShapeType állandókat az alakzat kiválasztásához.

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

4. lépés: Táblázat hozzáadása

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) táblát hoz létre a megadott pozíción. Az oszlopszélességek és sormagasságok pontértékek tömbjei.

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

5. lépés: Csatoló hozzáadása

A csatlakozók vizuálisan összekapcsolják a két alakzatot. Először hozza létre az alakzatokat, majd adjon hozzá egy csatlakozót, és állítsa be a kezdő- és végkapcsolási pontokat.

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

A csatlakozási helyek indexei 0‑3‑ig vannak számozva egy téglalap esetén: felső=0, bal=1, alsó=2, jobb=3.


6. lépés: Képkeret hozzáadása

Ágyazz be egy képet, és add hozzá a diához PictureFrame. Olvasd be először a kép bájtjait, add hozzá a prezentáció képgyűjteményéhez, majd hozd létre a keretet.

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

Gyakori problémák és megoldások

Alakzat a látható diaterületen kívül jelenik meg

A diák alapértelmezés szerint 720 × 540 pont méretűek. A x vagy y értékek ezen határokon kívül a formát a diáról kívülre helyezik. Tartsa meg a x < 720 és y < 540 értékeket, és biztosítsa a x + width <= 720 és y + height <= 540 értékeket.

NullReferenceException hozzáféréskor TextFrame

AddAutoShape() közvetlenül visszaadja a shape objektumot. Ha null-t látod, ellenőrizd, hogy nem dobod‑e el a visszatérési értéket.

A táblázatcellában a szöveg üres a hozzárendelés után

A helyes tulajdonság .TextFrame.Text (nem .Text közvetlenül a cellán). A cellák elérése: table.Rows[rowIndex][colIndex].TextFrame.Text = "value".


Gyakran Ismételt Kérdések

Hány alakzatot adhatok hozzá egy diára?

Nincs a könyvtár által előírt korlát. A gyakorlati korlátok a fájlmérettől és a cél PPTX megjelenítő képességétől függenek.

Módosíthatom egy alakzat pozícióját a hozzáadása után?

Igen. A AddAutoShape() által visszaadott shape objektumnak vannak X, Y, Width és Height tulajdonságai, amelyeket beállíthat:

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

Beállíthatom a forma körvonalának (szegélyének) színét?

Igen, a shape.LineFormat-on keresztül:

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

Támogatottak a diagramok?

Nem. Diagramok, SmartArt és OLE objektumok nincsenek megvalósítva ebben a kiadásban.


Lásd még

 Magyar