在 .NET 中格式化 PowerPoint 形状
概述
在 PowerPoint 中,您可以向幻灯片添加形状。由于形状由线条组成,您可以通过修改或应用效果来格式化其轮廓。此外,您还可以通过指定控制内部填充方式的设置来格式化形状。

Aspose.Slides for .NET 提供接口和属性,允许您使用 PowerPoint 中相同的选项格式化形状。
格式化线条
使用 Aspose.Slides,您可以为形状指定自定义线条样式。以下步骤概述了操作过程:
- 创建一个 Presentation 类的实例。
- 通过索引获取幻灯片的引用。
- 向幻灯片添加一个 IAutoShape。
- 设置形状的 line style。
- 设置线宽。
- 设置线条的 dash style。
- 为形状设置线条颜色。
- 将修改后的演示文稿保存为 PPTX 文件。
// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
// 获取第一张幻灯片。
ISlide slide = presentation.Slides[0];
// 添加一个矩形类型的自动形状。
IAutoShape shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 150, 75);
// 设置矩形形状的填充颜色。
shape.FillFormat.FillType = FillType.NoFill;
// 对矩形的线条应用格式化。
shape.LineFormat.Style = LineStyle.ThickThin;
shape.LineFormat.Width = 7;
shape.LineFormat.DashStyle = LineDashStyle.Dash;
// 设置矩形线条的颜色。
shape.LineFormat.FillFormat.FillType = FillType.Solid;
shape.LineFormat.FillFormat.SolidFillColor.Color = Color.Blue;
// 将 PPTX 文件保存到磁盘。
presentation.Save("formatted_lines.pptx", SaveFormat.Pptx);
}
结果:

格式化连接样式
以下是三种连接类型选项:
- 圆形
- 斜接
- 缓角
默认情况下,当 PowerPoint 在角度处(例如形状的拐角)连接两条线时,会使用 Round 设置。然而,如果绘制的是尖角形状,您可能更倾向于使用 Miter 选项。

// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
// 获取第一张幻灯片。
ISlide slide = presentation.Slides[0];
// 添加三个矩形类型的自动形状。
IAutoShape shape1 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 20, 150, 75);
IAutoShape shape2 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 210, 20, 150, 75);
IAutoShape shape3 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 135, 150, 75);
// 为每个矩形形状设置填充颜色。
shape1.FillFormat.FillType = FillType.Solid;
shape1.FillFormat.SolidFillColor.Color = Color.Black;
shape2.FillFormat.FillType = FillType.Solid;
shape2.FillFormat.SolidFillColor.Color = Color.Black;
shape3.FillFormat.FillType = FillType.Solid;
shape3.FillFormat.SolidFillColor.Color = Color.Black;
// 设置线条宽度。
shape1.LineFormat.Width = 15;
shape2.LineFormat.Width = 15;
shape3.LineFormat.Width = 15;
// 为每个矩形的线条设置颜色。
shape1.LineFormat.FillFormat.FillType = FillType.Solid;
shape1.LineFormat.FillFormat.SolidFillColor.Color = Color.Blue;
shape2.LineFormat.FillFormat.FillType = FillType.Solid;
shape2.LineFormat.FillFormat.SolidFillColor.Color = Color.Blue;
shape3.LineFormat.FillFormat.FillType = FillType.Solid;
shape3.LineFormat.FillFormat.SolidFillColor.Color = Color.Blue;
// 设置连接样式。
shape1.LineFormat.JoinStyle = LineJoinStyle.Miter;
shape2.LineFormat.JoinStyle = LineJoinStyle.Bevel;
shape3.LineFormat.JoinStyle = LineJoinStyle.Round;
// 为每个矩形添加文本。
shape1.TextFrame.Text = "Miter Join Style";
shape2.TextFrame.Text = "Bevel Join Style";
shape3.TextFrame.Text = "Round Join Style";
// 将 PPTX 文件保存到磁盘。
presentation.Save("join_styles.pptx", SaveFormat.Pptx);
}
渐变填充
在 PowerPoint 中,Gradient Fill(渐变填充)是一种格式化选项,允许您对形状应用连续的颜色渐变。例如,您可以以一种颜色逐渐淡入另一种颜色的方式应用两种或多种颜色。
以下是在 Aspose.Slides 中对形状应用渐变填充的方法:
- 创建一个 Presentation 类的实例。
- 通过索引获取幻灯片的引用。
- 向幻灯片添加一个 IAutoShape。
- 将形状的 FillType 设置为
Gradient。 - 使用 IGradientFormat 接口公开的渐变停止集合的
Add方法,添加您首选的两种颜色及其定义的位置。 - 将修改后的演示文稿保存为 PPTX 文件。
// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
// 获取第一张幻灯片。
ISlide slide = presentation.Slides[0];
// 添加一个椭圆类型的自动形状。
IAutoShape shape = slide.Shapes.AddAutoShape(ShapeType.Ellipse, 50, 50, 150, 75);
// 对椭圆应用渐变格式。
shape.FillFormat.FillType = FillType.Gradient;
shape.FillFormat.GradientFormat.GradientShape = GradientShape.Linear;
// 设置渐变的方向。
shape.FillFormat.GradientFormat.GradientDirection = GradientDirection.FromCorner2;
// 添加两个渐变停止点。
shape.FillFormat.GradientFormat.GradientStops.Add(1.0f, PresetColor.Purple);
shape.FillFormat.GradientFormat.GradientStops.Add(0.0f, PresetColor.Red);
// 将 PPTX 文件保存到磁盘。
presentation.Save("gradient_fill.pptx", SaveFormat.Pptx);
}
结果:

图案填充
在 PowerPoint 中,Pattern Fill(图案填充)是一种格式化选项,允许您对形状应用两色设计——例如点、条纹、交叉线或格子。您可以为图案的前景色和背景色选择自定义颜色。
Aspose.Slides 提供超过 45 种预定义的图案样式,您可以将其应用于形状,以增强演示文稿的视觉效果。即使选择了预定义图案,仍然可以指定其使用的确切颜色。
以下是在 Aspose.Slides 中对形状应用图案填充的方法:
- 创建一个 Presentation 类的实例。
- 通过索引获取幻灯片的引用。
- 向幻灯片添加一个 IAutoShape。
- 将形状的 FillType 设置为
Pattern。 - 从预定义选项中选择一种图案样式。
- 设置图案的 Background Color。
- 设置图案的 Foreground Color。
- 将修改后的演示文稿保存为 PPTX 文件。
// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
// 获取第一张幻灯片。
ISlide slide = presentation.Slides[0];
// 添加一个矩形类型的自动形状。
IAutoShape shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 150, 75);
// 将填充类型设置为图案。
shape.FillFormat.FillType = FillType.Pattern;
// 设置图案样式。
shape.FillFormat.PatternFormat.PatternStyle = PatternStyle.Trellis;
// 设置图案的背景色和前景色。
shape.FillFormat.PatternFormat.BackColor.Color = Color.LightGray;
shape.FillFormat.PatternFormat.ForeColor.Color = Color.Yellow;
// 将 PPTX 文件保存到磁盘。
presentation.Save("pattern_fill.pptx", SaveFormat.Pptx);
}
结果:

图片填充
在 PowerPoint 中,Picture Fill(图片填充)是一种格式化选项,允许您在形状内部插入图像——相当于将图像用作形状的背景。
以下是使用 Aspose.Slides 对形状应用图片填充的方法:
- 创建一个 Presentation 类的实例。
- 通过索引获取幻灯片的引用。
- 向幻灯片添加一个 IAutoShape。
- 将形状的 FillType 设置为
Picture。 - 将图片填充模式设置为
Tile(或其他首选模式)。 - 使用所需的图像创建一个 IPPImage 对象。
- 将此图像分配给形状的
PictureFillFormat的Picture.Image属性。 - 将修改后的演示文稿保存为 PPTX 文件。

// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
// 获取第一张幻灯片。
ISlide slide = presentation.Slides[0];
// 添加一个矩形类型的自动形状。
IAutoShape shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 255, 130);
// 将填充类型设置为图片。
shape.FillFormat.FillType = FillType.Picture;
// 设置图片填充模式。
shape.FillFormat.PictureFillFormat.PictureFillMode = PictureFillMode.Tile;
// 加载图像并将其添加到演示文稿资源。
IImage image = Images.FromFile("lotus.png");
IPPImage presentationImage = presentation.Images.AddImage(image);
image.Dispose();
// 设置图片。
shape.FillFormat.PictureFillFormat.Picture.Image = presentationImage;
// 将 PPTX 文件保存到磁盘。
presentation.Save("picture_fill.pptx", SaveFormat.Pptx);
}
结果:

将图片平铺为纹理
- PictureFillMode:设置图片填充模式——
Tile或Stretch。 - TileAlignment:指定形状内部瓦片的对齐方式。
- TileFlip:控制瓦片是否水平、垂直或同时翻转。
- TileOffsetX:设置瓦片相对于形状原点的水平偏移(单位为点)。
- TileOffsetY:设置瓦片相对于形状原点的垂直偏移(单位为点)。
- TileScaleX:定义瓦片的水平缩放比例(百分比)。
- TileScaleY:定义瓦片的垂直缩放比例(百分比)。
// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
// 获取第一张幻灯片。
ISlide firstSlide = presentation.Slides[0];
// 添加一个矩形自动形状。
IAutoShape shape = firstSlide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 190, 95);
// 将形状的填充类型设置为图片。
shape.FillFormat.FillType = FillType.Picture;
// 加载图像并将其添加到演示文稿资源。
IPPImage presentationImage;
using (IImage sourceImage = Images.FromFile("lotus.png"))
presentationImage = presentation.Images.AddImage(sourceImage);
// 将图像分配给形状。
IPictureFillFormat pictureFillFormat = shape.FillFormat.PictureFillFormat;
pictureFillFormat.Picture.Image = presentationImage;
// 配置图片填充模式及平铺属性。
pictureFillFormat.PictureFillMode = PictureFillMode.Tile;
pictureFillFormat.TileOffsetX = -32;
pictureFillFormat.TileOffsetY = -32;
pictureFillFormat.TileScaleX = 50;
pictureFillFormat.TileScaleY = 50;
pictureFillFormat.TileAlignment = RectangleAlignment.BottomRight;
pictureFillFormat.TileFlip = TileFlip.FlipBoth;
// 将 PPTX 文件保存到磁盘。
presentation.Save("tile.pptx", SaveFormat.Pptx);
}
结果:

纯色填充
在 PowerPoint 中,Solid Color Fill(纯色填充)是一种格式化选项,可使用单一均匀的颜色填充形状。此纯背景颜色不含渐变、纹理或图案。
要使用 Aspose.Slides 对形状应用纯色填充,请执行以下步骤:
- 创建一个 Presentation 类的实例。
- 通过索引获取幻灯片的引用。
- 向幻灯片添加一个 IAutoShape。
- 将形状的 FillType 设置为
Solid。 - 将您首选的填充颜色分配给形状。
- 将修改后的演示文稿保存为 PPTX 文件。
// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
// 获取第一张幻灯片。
ISlide slide = presentation.Slides[0];
// 添加一个矩形类型的自动形状。
IAutoShape shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 150, 75);
// 将填充类型设置为纯色。
shape.FillFormat.FillType = FillType.Solid;
// 设置填充颜色。
shape.FillFormat.SolidFillColor.Color = Color.Yellow;
// 将 PPTX 文件保存到磁盘。
presentation.Save("solid_color_fill.pptx", SaveFormat.Pptx);
}
结果:

设置透明度
在 PowerPoint 中,当您对形状应用纯色、渐变、图片或纹理填充时,还可以设置透明度级别,以控制填充的不透明度。更高的透明度值会使形状更透明,从而部分显示背景或底层对象。
Aspose.Slides 通过调整用于填充的颜色的 alpha 值来设置透明度。以下是操作方法:
- 创建一个 Presentation 类的实例。
- 通过索引获取幻灯片的引用。
- 向幻灯片添加一个 IAutoShape。
- 将形状的 FillType 设置为
Solid。 - 使用
Color.FromArgb(alpha, baseColor)定义具有透明度的颜色(alpha分量控制透明度)。 - 保存演示文稿。
const int alpha = 128;
// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
// 获取第一张幻灯片。
ISlide slide = presentation.Slides[0];
// 添加一个实心矩形自动形状。
IAutoShape solidShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 150, 75);
// 在实心形状上添加一个透明矩形自动形状。
IAutoShape transparentShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 80, 80, 150, 75);
transparentShape.FillFormat.FillType = FillType.Solid;
transparentShape.FillFormat.SolidFillColor.Color = Color.FromArgb(alpha, Color.Yellow);
// 将 PPTX 文件保存到磁盘。
presentation.Save("shape_transparency.pptx", SaveFormat.Pptx);
}
结果:

旋转形状
Aspose.Slides 允许您在 PowerPoint 演示文稿中旋转形状。这在定位具备特定对齐或设计需求的视觉元素时非常有用。
要在幻灯片上旋转形状,请执行以下步骤:
- 创建一个 Presentation 类的实例。
- 通过索引获取幻灯片的引用。
- 向幻灯片添加一个 IAutoShape。
- 将形状的
Rotation属性设置为所需角度。 - 保存演示文稿。
// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
// 获取第一张幻灯片。
ISlide slide = presentation.Slides[0];
// 添加一个矩形类型的自动形状。
IAutoShape shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 150, 75);
// 将形状旋转 5 度。
shape.Rotation = 5;
// 将 PPTX 文件保存到磁盘。
presentation.Save("shape_rotation.pptx", SaveFormat.Pptx);
}
结果:

添加 3D 倾斜效果
Aspose.Slides 允许您通过配置其 ThreeDFormat 属性为形状添加 3D 倾斜效果。
要为形状添加 3D 倾斜效果,请执行以下步骤:
- 实例化 Presentation 类。
- 通过索引获取幻灯片的引用。
- 向幻灯片添加一个 IAutoShape。
- 配置形状的 ThreeDFormat 以定义倾斜设置。
- 保存演示文稿。
// 创建 Presentation 类的实例。
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
// 向幻灯片添加形状。
IAutoShape shape = slide.Shapes.AddAutoShape(ShapeType.Ellipse, 50, 50, 100, 100);
shape.FillFormat.FillType = FillType.Solid;
shape.FillFormat.SolidFillColor.Color = Color.Green;
shape.LineFormat.FillFormat.FillType = FillType.Solid;
shape.LineFormat.FillFormat.SolidFillColor.Color = Color.Orange;
shape.LineFormat.Width = 2.0;
// 设置形状的 ThreeDFormat 属性。
shape.ThreeDFormat.Depth = 4;
shape.ThreeDFormat.BevelTop.BevelType = BevelPresetType.Circle;
shape.ThreeDFormat.BevelTop.Height = 6;
shape.ThreeDFormat.BevelTop.Width = 6;
shape.ThreeDFormat.Camera.CameraType = CameraPresetType.OrthographicFront;
shape.ThreeDFormat.LightRig.LightType = LightRigPresetType.ThreePt;
shape.ThreeDFormat.LightRig.Direction = LightingDirection.Top;
// 将演示文稿保存为 PPTX 文件。
presentation.Save("3D_bevel_effect.pptx", SaveFormat.Pptx);
}
结果:

添加 3D 旋转效果
Aspose.Slides 通过配置其 ThreeDFormat 属性允许您为形状添加 3D 旋转效果。
要对形状应用 3D 旋转:
- 创建一个 Presentation 类的实例。
- 通过索引获取幻灯片的引用。
- 向幻灯片添加一个 IAutoShape。
- 设置形状的 CameraType 和 LightType 以定义 3D 旋转。
- 保存演示文稿。
// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
IAutoShape autoShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 150, 75);
autoShape.TextFrame.Text = "Hello, Aspose!";
autoShape.ThreeDFormat.Depth = 6;
autoShape.ThreeDFormat.Camera.SetRotation(40, 35, 20);
autoShape.ThreeDFormat.Camera.CameraType = CameraPresetType.IsometricLeftUp;
autoShape.ThreeDFormat.LightRig.LightType = LightRigPresetType.Balanced;
// 将演示文稿保存为 PPTX 文件。
presentation.Save("3D_rotation_effect.pptx", SaveFormat.Pptx);
}
结果:

重置格式
以下 C# 代码演示如何重置幻灯片的格式,并将 LayoutSlide 上所有占位符形状的位置、大小和格式恢复为默认设置:
using (Presentation presentation = new Presentation("sample.pptx"))
{
foreach (ISlide slide in presentation.Slides)
{
// 重置幻灯片上具有布局占位符的每个形状。
slide.Reset();
}
presentation.Save("reset_formatting.pptx", SaveFormat.Pptx);
}
常见问题
形状格式化会影响最终的演示文稿文件大小吗?
影响很小。嵌入的图像和媒体占据了大部分文件空间,而形状参数如颜色、效果和渐变仅作为元数据存储,几乎不增加额外大小。
如何检测幻灯片上具有相同格式的形状以便对它们进行分组?
比较每个形状的关键格式属性——填充、线条和效果设置。如果所有对应值匹配,则视为相同样式,并在逻辑上对这些形状进行分组,这有助于后续的样式管理。
我能将一组自定义形状样式保存到单独的文件,以便在其他演示文稿中重复使用吗?
可以。将带有所需样式的示例形状存储在模板幻灯片或 .POTX 模板文件中。创建新演示文稿时,打开该模板,克隆所需的已样式化形状,并在需要的地方重新应用其格式。