在 .NET 中格式化 PowerPoint 形状

概述

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

格式化形状-PowerPoint

Aspose.Slides for .NET 提供接口和属性,允许您使用 PowerPoint 中相同的选项格式化形状。

格式化线条

使用 Aspose.Slides,您可以为形状指定自定义线条样式。以下步骤概述了操作过程:

  1. 创建一个 Presentation 类的实例。
  2. 通过索引获取幻灯片的引用。
  3. 向幻灯片添加一个 IAutoShape
  4. 设置形状的 line style
  5. 设置线宽。
  6. 设置线条的 dash style
  7. 为形状设置线条颜色。
  8. 将修改后的演示文稿保存为 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 中对形状应用渐变填充的方法:

  1. 创建一个 Presentation 类的实例。
  2. 通过索引获取幻灯片的引用。
  3. 向幻灯片添加一个 IAutoShape
  4. 将形状的 FillType 设置为 Gradient
  5. 使用 IGradientFormat 接口公开的渐变停止集合的 Add 方法,添加您首选的两种颜色及其定义的位置。
  6. 将修改后的演示文稿保存为 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 中对形状应用图案填充的方法:

  1. 创建一个 Presentation 类的实例。
  2. 通过索引获取幻灯片的引用。
  3. 向幻灯片添加一个 IAutoShape
  4. 将形状的 FillType 设置为 Pattern
  5. 从预定义选项中选择一种图案样式。
  6. 设置图案的 Background Color
  7. 设置图案的 Foreground Color
  8. 将修改后的演示文稿保存为 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 对形状应用图片填充的方法:

  1. 创建一个 Presentation 类的实例。
  2. 通过索引获取幻灯片的引用。
  3. 向幻灯片添加一个 IAutoShape
  4. 将形状的 FillType 设置为 Picture
  5. 将图片填充模式设置为 Tile(或其他首选模式)。
  6. 使用所需的图像创建一个 IPPImage 对象。
  7. 将此图像分配给形状的 PictureFillFormatPicture.Image 属性。
  8. 将修改后的演示文稿保存为 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:设置图片填充模式——TileStretch
  • 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 对形状应用纯色填充,请执行以下步骤:

  1. 创建一个 Presentation 类的实例。
  2. 通过索引获取幻灯片的引用。
  3. 向幻灯片添加一个 IAutoShape
  4. 将形状的 FillType 设置为 Solid
  5. 将您首选的填充颜色分配给形状。
  6. 将修改后的演示文稿保存为 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 值来设置透明度。以下是操作方法:

  1. 创建一个 Presentation 类的实例。
  2. 通过索引获取幻灯片的引用。
  3. 向幻灯片添加一个 IAutoShape
  4. 将形状的 FillType 设置为 Solid
  5. 使用 Color.FromArgb(alpha, baseColor) 定义具有透明度的颜色(alpha 分量控制透明度)。
  6. 保存演示文稿。
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 演示文稿中旋转形状。这在定位具备特定对齐或设计需求的视觉元素时非常有用。

要在幻灯片上旋转形状,请执行以下步骤:

  1. 创建一个 Presentation 类的实例。
  2. 通过索引获取幻灯片的引用。
  3. 向幻灯片添加一个 IAutoShape
  4. 将形状的 Rotation 属性设置为所需角度。
  5. 保存演示文稿。
// 实例化表示演示文稿文件的 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 倾斜效果,请执行以下步骤:

  1. 实例化 Presentation 类。
  2. 通过索引获取幻灯片的引用。
  3. 向幻灯片添加一个 IAutoShape
  4. 配置形状的 ThreeDFormat 以定义倾斜设置。
  5. 保存演示文稿。
 // 创建 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 倾斜效果

添加 3D 旋转效果

Aspose.Slides 通过配置其 ThreeDFormat 属性允许您为形状添加 3D 旋转效果。

要对形状应用 3D 旋转:

  1. 创建一个 Presentation 类的实例。
  2. 通过索引获取幻灯片的引用。
  3. 向幻灯片添加一个 IAutoShape
  4. 设置形状的 CameraTypeLightType 以定义 3D 旋转。
  5. 保存演示文稿。
// 实例化表示演示文稿文件的 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);
}

结果:

3D 旋转效果

重置格式

以下 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 模板文件中。创建新演示文稿时,打开该模板,克隆所需的已样式化形状,并在需要的地方重新应用其格式。