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.FossVé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.