Cum să adăugați forme în PowerPoint în .NET

Cum să adăugați forme în PowerPoint în .NET

Aspose.Slides FOSS for .NET acceptă adăugarea AutoShapes, Tables, Connectors și PictureFrames la diapozitivele prezentării. Toate tipurile de forme sunt adăugate prin colecția slide.Shapes.

Ghid pas cu pas

Pasul 1: Instalați pachetul

dotnet add package Aspose.Slides.Foss

Verificați instalarea:

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

Pasul 2: Creaţi o prezentare

Folosiți întotdeauna Presentation cu o declarație 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);

Pasul 3: Adăugați o AutoShape

slide.Shapes.AddAutoShape(shapeType, x, y, width, height) plasează o formă la poziția și dimensiunea date (toate în puncte). Folosiți constantele ShapeType pentru a selecta forma.

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

Pasul 4: Adaugă un tabel

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) creează un tabel la poziția specificată. Lățimile coloanelor și înălțimile rândurilor sunt array-uri de valori în puncte.

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

Pasul 5: Adaugă un Conector

Conectorii leagă vizual două forme. Creați formele mai întâi, apoi adăugați un conector și setați punctele de conexiune de început și de sfârșit.

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

Indiciile locațiilor de conectare sunt numerotate 0‑3 pentru un dreptunghi: top=0, left=1, bottom=2, right=3.


Pasul 6: Adaugă un cadru foto

Încorporează o imagine și adaugă‑o pe diapozitiv ca un PictureFrame. Citește mai întâi octeții imaginii, adaugă-i în colecția de imagini a prezentării, apoi creează cadrul.

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

Probleme comune și soluții

Forma apare în afara zonei vizibile a diapozitivului

Diapozitivele sunt de 720 × 540 de puncte în mod implicit. Valorile x sau y dincolo de aceste limite plasează forma în afara diapozitivului. Păstraţi x < 720 și y < 540 și asiguraţi x + width <= 720 și y + height <= 540.

NullReferenceException când accesați TextFrame

AddAutoShape() returnează direct obiectul shape. Dacă vedeți null, verificați că nu renunțați la valoarea returnată.

Textul celulei din tabel este gol după atribuire

Proprietatea corectă este .TextFrame.Text (nu .Text direct pe celulă). Accesați celulele ca table.Rows[rowIndex][colIndex].TextFrame.Text = "value".


Întrebări frecvente

Câte forme pot adăuga pe un diapozitiv?

Nu există o limită impusă de bibliotecă. Limitele practice depind de dimensiunea fișierului și de capacitatea de redare a vizualizatorului PPTX țintă.

Pot să schimb poziția unei forme după ce am adăugat-o?

Da. Obiectul shape returnat de AddAutoShape() are proprietățile X, Y, Width și Height pe care le puteți seta:

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

Pot să setez culoarea conturului (bordurii) formei?

Da, prin shape.LineFormat:

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

Sunt graficele acceptate?

Nu. Graficele, SmartArt și obiectele OLE nu sunt implementate în această ediție.


Vezi și

 Română