如何在 .NET 中向 PowerPoint 添加形状
Aspose.Slides FOSS for .NET 支持向演示文稿幻灯片添加 AutoShapes、Tables、Connectors 和 PictureFrames。所有形状类型均通过 slide.Shapes 集合添加。
分步指南
步骤 1:安装软件包
dotnet add package Aspose.Slides.Foss验证安装:
using Aspose.Slides.Foss;
Console.WriteLine("Ready");步骤 2:创建演示文稿
始终使用 Presentation 与 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);步骤 3:添加 AutoShape
slide.Shapes.AddAutoShape(shapeType, x, y, width, height) 在给定的位置和大小(全部以点为单位)放置一个形状。使用 ShapeType 常量来选择该形状。
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:添加表格
slide.Shapes.AddTable(x, y, columnWidths, rowHeights) 在指定位置创建表格。列宽和行高是以点为单位的数组。
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:添加连接器
连接线在视觉上链接两个形状。先创建形状,然后添加连接线并设置其起始和结束连接点。
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);矩形的连接点索引编号为 0-3:top=0,left=1,bottom=2,right=3。
步骤 6:添加图片框
将图像嵌入并将其添加到幻灯片中作为 PictureFrame。首先读取图像字节,将其添加到演示文稿的图像集合中,然后创建框架。
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);常见问题及解决方案
形状出现在可见幻灯片区域之外
幻灯片默认尺寸为 720 × 540 点。x 或 y 超出该范围的值会使形状位于幻灯片之外。保留 x < 720 和 y < 540,并确保 x + width <= 720 和 y + height <= 540。
NullReferenceException 在访问 TextFrame 时
AddAutoShape() 直接返回形状对象。如果看到 null,请检查是否没有丢弃返回值。
表格单元格文本在赋值后为空
正确的属性是 .TextFrame.Text(而不是直接在单元格上使用 .Text)。访问单元格请使用 table.Rows[rowIndex][colIndex].TextFrame.Text = "value"。
常见问题
我可以在幻灯片上添加多少个形状?
没有库强加的限制。实际限制取决于文件大小以及目标 PPTX 查看器的渲染能力。
添加形状后,我可以更改其位置吗?
是的。AddAutoShape() 返回的 shape 对象具有 X、Y、Width 和 Height 属性,您可以设置它们:
shape.X = 100;
shape.Y = 200;
shape.Width = 400;
shape.Height = 80;我可以设置形状轮廓(边框)颜色吗?
是的,通过 shape.LineFormat:
using Aspose.Slides.Foss.Drawing;
shape.LineFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 200, 0, 0);支持图表吗?
不。此版本未实现图表、SmartArt 和 OLE 对象。