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

Aspose.Slides for .NET 提供了接口和属性,使您能够使用 PowerPoint 中相同的选项来格式化形状。
格式化线条
使用 Aspose.Slides,您可以为形状指定自定义线条样式。以下步骤概述了操作流程:
- 创建 Presentation 类的实例。
- 通过索引获取幻灯片的引用。
- 向幻灯片添加一个 IAutoShape。
- 设置形状的 line style。
- 设置线宽。
- 设置线条的 dash style。
- 设置形状的线条颜色。
- 将修改后的演示文稿保存为 PPTX 文件。
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
// 实例化表示演示文稿文件的 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);
}
结果:

对形状线条应用草图效果
草图效果使形状线条看起来像手绘。使用 IShape.LineFormat 访问线条设置,使用 ILineFormat.SketchFormat 访问草图设置,并使用 ISketchFormat.SketchType 从 LineSketchType 枚举中选择值。
下面的 C# 代码演示如何应用 LineSketchType.Curved 效果,读取显式分配的值,以及如何使用 LineSketchType.None 移除该效果:
using Aspose.Slides;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 200, 100);
// Access the shape's line format and its sketch format.
var sketchFormat = shape.LineFormat.SketchFormat;
// Apply a sketch effect.
sketchFormat.SketchType = LineSketchType.Curved;
// Read the sketch effect assigned directly to the shape.
var explicitSketchType = sketchFormat.SketchType;
Console.WriteLine($"Explicit sketch type: {explicitSketchType}");
// Remove the sketch effect.
sketchFormat.SketchType = LineSketchType.None;
ISketchFormat.SketchType 返回的值表示直接分配给形状的设置。如果线条格式可以从主题、母版幻灯片或布局幻灯片继承,请使用 ILineFormat.GetEffective,访问 ILineFormatEffectiveData.SketchFormat,并读取 ISketchFormatEffectiveData.SketchType。有效值反映在解决继承后实际应用的格式:
using Aspose.Slides;
using var presentation = new Presentation("presentation.pptx");
var shape = presentation.Slides[0].Shapes[0];
var lineFormat = shape.LineFormat;
var explicitSketchType = lineFormat.SketchFormat.SketchType;
var effectiveLineFormat = lineFormat.GetEffective();
var effectiveSketchType = effectiveLineFormat.SketchFormat.SketchType;
Console.WriteLine($"Explicit sketch type: {explicitSketchType}");
Console.WriteLine($"Effective sketch type: {effectiveSketchType}");
格式化连接样式
以下是三种连接类型选项:
- 圆形
- 斜接
- 斜角
默认情况下,当 PowerPoint 在角度处(例如形状的角落)连接两条线时,会使用 Round 设置。然而,如果绘制的形状具有尖锐角度,您可能更倾向于使用 Miter 选项。

using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
// 实例化表示演示文稿文件的 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 文件。
using Aspose.Slides;
using Aspose.Slides.Export;
// 实例化表示演示文稿文件的 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 文件。
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
// 获取第一张幻灯片。
ISlide slide = presentation.Slides[0];
// 添加一个矩形类型的自动形状。
IAutoShape shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 150, 75);
// 将填充类型设置为 Pattern。
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 对象。
- 将此图像分配给形状的
Picture.Image属性,即PictureFillFormat。 - 将修改后的演示文稿保存为 PPTX 文件。
假设我们有一个名为 “lotus.png” 的文件,如下图所示:

using Aspose.Slides;
using Aspose.Slides.Export;
// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
// 获取第一张幻灯片。
ISlide slide = presentation.Slides[0];
// 添加一个矩形类型的自动形状。
IAutoShape shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 255, 130);
// 将填充类型设置为 Picture。
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);
}

将图片平铺为纹理
如果您想将平铺的图片设为纹理并自定义平铺行为,可以使用 IPictureFillFormat 接口和 PictureFillFormat 类的以下属性:
- PictureFillMode: 设置图片填充模式——
Tile或Stretch。 - TileAlignment: 指定平铺在形状内部的对齐方式。
- TileFlip: 控制平铺是否水平翻转、垂直翻转或同时翻转。
- TileOffsetX: 设置平铺相对于形状原点的水平偏移(单位为点)。
- TileOffsetY: 设置平铺相对于形状原点的垂直偏移(单位为点)。
- TileScaleX: 定义平铺的水平缩放比例(百分比)。
- TileScaleY: 定义平铺的垂直缩放比例(百分比)。
using Aspose.Slides;
using Aspose.Slides.Export;
// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
// 获取第一张幻灯片。
ISlide firstSlide = presentation.Slides[0];
// 添加一个矩形自动形状。
IAutoShape shape = firstSlide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 190, 95);
// 将形状的填充类型设置为 Picture。
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 文件。
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
// 实例化表示演示文稿文件的 Presentation 类。
using (Presentation presentation = new Presentation())
{
// 获取第一张幻灯片。
ISlide slide = presentation.Slides[0];
// 添加一个矩形类型的自动形状。
IAutoShape shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 150, 75);
// 将填充类型设置为 Solid。
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参数控制透明度)。 - 保存演示文稿。
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
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属性设置为所需的角度。 - 保存演示文稿。
using Aspose.Slides;
using Aspose.Slides.Export;
// 实例化表示演示文稿文件的 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 倾斜效果。
- 实例化 Presentation 类。
- 通过索引获取幻灯片的引用。
- 向幻灯片添加一个 IAutoShape。
- 配置形状的 ThreeDFormat 以定义倾斜设置。
- 保存演示文稿。
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
// 创建 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 旋转效果。
- 创建 Presentation 类的实例。
- 通过索引获取幻灯片的引用。
- 向幻灯片添加一个 IAutoShape。
- 设置形状的 CameraType 和 LightType 以定义 3D 旋转。
- 保存演示文稿。
using Aspose.Slides;
using Aspose.Slides.Export;
// 创建 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.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);
}

控制形状的黑白渲染
IShape.BlackWhiteMode 属性指定在以黑白模式查看或处理演示文稿时,单个形状的渲染方式。它本身并不会启用黑白显示,也不会在正常彩色模式下更改形状的填充、线条或其他格式。
使用 BlackWhiteMode 枚举中的值来选择所需的行为。例如,Automatic 让渲染应用程序自行决定转换方式,Gray 和 LightGray 使用灰色,BlackWhite 仅使用黑白,Black 和 White 强制单色,Color 保持正常颜色,Hidden 在黑白模式下隐藏形状。NotDefined 表示未为形状指定模式。
下面的 C# 代码创建一个彩色形状,并使其在黑白显示模式下呈现为灰色:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 200, 100);
shape.FillFormat.FillType = FillType.Solid;
shape.FillFormat.SolidFillColor.Color = Color.Orange;
// 在彩色模式下保持橙色填充,但在黑白模式下以灰色渲染形状。
shape.BlackWhiteMode = BlackWhiteMode.Gray;
presentation.Save("shape_black_white_mode.pptx", SaveFormat.Pptx);
在正常彩色模式下,矩形保持橙色填充。在黑白显示工作流中,由于其模式设置为 Gray,因此使用灰色显示。这使您能够在保持完整彩色幻灯片的同时,为打印、预览或其他遵循演示文稿黑白显示设置的工作流定义不同的外观。
重置格式
下面的 C# 代码演示如何重置幻灯片的格式,并将 LayoutSlide 上所有带占位符的形状的位置、大小和格式恢复为默认设置:
using Aspose.Slides;
using Aspose.Slides.Export;
using (Presentation presentation = new Presentation("sample.pptx"))
{
foreach (ISlide slide in presentation.Slides)
{
// 重置幻灯片上每个在布局中具有占位符的形状。
slide.Reset();
}
presentation.Save("reset_formatting.pptx", SaveFormat.Pptx);
}
常见问题
形状格式化会影响最终演示文稿的文件大小吗?
影响极小。嵌入的图像和媒体占据了文件的大部分空间,而形状的参数(如颜色、效果和渐变)以元数据形式存储,几乎不增加额外大小。
如何检测幻灯片上具有相同格式的形状以便对其进行分组?
比较每个形状的关键格式属性——填充、线条和效果设置。如果所有对应值匹配,则视为相同样式,并在逻辑上对这些形状进行分组,从而简化后续的样式管理。
我可以将一组自定义形状样式保存到单独的文件,以便在其他演示文稿中重复使用吗?
可以。将带有所需样式的示例形状存储在模板幻灯片文件或 .POTX 模板文件中。创建新演示文稿时,打开模板,克隆所需的样式形状,并在需要的地方重新应用其格式。