Comment ajouter des formes à PowerPoint en .NET

Comment ajouter des formes à PowerPoint en .NET

Aspose.Slides FOSS for .NET prend en charge l’ajout d’AutoShapes, de Tables, de Connectors et de PictureFrames aux diapositives de présentation. Tous les types de formes sont ajoutés via la collection slide.Shapes.

Guide étape par étape

Étape 1 : Installer le package

dotnet add package Aspose.Slides.Foss

Vérifiez l’installation :

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

Étape 2 : Créer une présentation

Utilisez toujours Presentation avec une déclaration 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);

Étape 3 : Ajouter une AutoShape

slide.Shapes.AddAutoShape(shapeType, x, y, width, height) place une forme à la position et à la taille données (toutes en points). Utilisez les constantes ShapeType pour sélectionner la forme.

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

Étape 4 : Ajouter un tableau

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) crée un tableau à la position spécifiée. Les largeurs de colonnes et les hauteurs de lignes sont des tableaux de valeurs en points.

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

Étape 5 : Ajouter un connecteur

Les connecteurs relient visuellement deux formes. Créez d’abord les formes, puis ajoutez un connecteur et définissez ses points de connexion de départ et d’arrivée.

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

Les indices des sites de connexion sont numérotés 0-3 pour un rectangle : haut=0, gauche=1, bas=2, droite=3.


Étape 6 : Ajouter un cadre photo

Intégrez une image et ajoutez‑la à la diapositive en tant que PictureFrame. Lisez d’abord les octets de l’image, ajoutez‑les à la collection d’images de la présentation, puis créez le cadre.

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

Problèmes courants et solutions

Forme apparaît en dehors de la zone visible de la diapositive

Les diapositives mesurent 720 × 540 points par défaut. Les valeurs de x ou y dépassant ces limites placent la forme hors de la diapositive. Conservez x < 720 et y < 540, et assurez‑vous de x + width <= 720 et y + height <= 540.

NullReferenceException lors de l’accès à TextFrame

AddAutoShape() renvoie directement l’objet shape. Si vous voyez null, vérifiez que vous ne jetez pas la valeur de retour.

Le texte de la cellule du tableau est vide après l’affectation

La propriété correcte est .TextFrame.Text (pas .Text directement sur la cellule). Accédez aux cellules en tant que table.Rows[rowIndex][colIndex].TextFrame.Text = "value".


Questions fréquentes

Combien de formes puis‑je ajouter à une diapositive ?

Il n’y a pas de limite imposée par la bibliothèque. Les limites pratiques dépendent de la taille du fichier et de la capacité de rendu de votre visionneuse PPTX cible.

Puis-je modifier la position d’une forme après l’avoir ajoutée ?

Oui. L’objet shape renvoyé par AddAutoShape() possède les propriétés X, Y, Width et Height que vous pouvez définir :

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

Puis-je définir la couleur du contour (bordure) de la forme ?

Oui, via shape.LineFormat:

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

Les graphiques sont-ils pris en charge ?

Non. Les graphiques, SmartArt et les objets OLE ne sont pas implémentés dans cette édition.


Voir aussi

 Français