C# 在PPT中绘制形状(shape)
概述
本篇文章将介绍C# 在PPT幻灯片中操作形状(shape)的方法。这里主要涉及常规形状,如箭头、矩形、圆形、三角形、多边形、不规则形状等。下面的示例中,可以通过绘制形状,并设置相应格式等。示例包含以下要点:
- 绘制形状
- 用图片填充形状
- 在形状中添加文字
- 设置形状单色、渐变色填充
- 设置形状阴影效果
- 组合多个形状为一个
- 设置形状光边效果
- 将形状保存为图片
工具
下载安装后,注意在程序中添加引用Spire.Presentation.dll到程序,dll文件可在安装路径下的Bin文件夹中获取。

示例代码(供参考)
【示例1】绘制形状
步骤1:新建一个幻灯片
//新建一个幻灯片文档,并指定幻灯片大小
Presentation ppt = new Presentation();
ppt.SlideSize.Type = SlideSizeType.Screen16x9;
步骤2:获取第一张幻灯片
ISlide slide = ppt.Slides[];
步骤3:添加一个云朵形状,并填充渐变色,绘入文字
//添加一个云朵形状,并填充渐变颜色
IAutoShape shape1 = slide.Shapes.AppendShape(ShapeType.CalloutCloud, new RectangleF(, , , ));
shape1.Fill.FillType = FillFormatType.Gradient;
shape1.Fill.Gradient.GradientStops.Append(, Color.Blue);
shape1.Fill.Gradient.GradientStops.Append(, Color.Azure);
shape1.Line.FillType = FillFormatType.None; //在形状中绘制文本,并设置字体、字号、字体颜色等
shape1.AppendTextFrame("HOW??");
TextRange textRange = (shape1 as IAutoShape).TextFrame.TextRange;
textRange.FontHeight = ;
textRange.LatinFont = new TextFont("Arial");
textRange.Fill.FillType = FillFormatType.Solid;
textRange.Fill.SolidColor.Color = Color.White;
步骤4:添加椭圆形状,并加载图片填充
IAutoShape shape2 = slide.Shapes.AppendShape(ShapeType.Ellipse, new RectangleF(, , , ));
string picPath = "sk.png";
shape2.Fill.FillType = FillFormatType.Picture;
shape2.Fill.PictureFill.Picture.Url = picPath;
shape2.Fill.PictureFill.FillType = PictureFillType.Stretch;
shape2.Line.FillType = FillFormatType.None;
步骤5:添加三角形,并设置边框效果,阴影效果
//添加一个三角形,填充颜色并设置边框样式
IAutoShape shape3 = slide.Shapes.AppendShape(ShapeType.Triangle, new RectangleF(, , , ));
shape3.Fill.FillType = FillFormatType.Solid;
shape3.Fill.SolidColor.Color = Color.Wheat;
shape3.Line.Width = ;
shape3.Line.DashStyle = LineDashStyleType.Dash;
shape3.ShapeStyle.LineColor.Color = Color.Red; //设置形状阴影效果
PresetShadow presetShadow = new PresetShadow();
presetShadow.Preset = PresetShadowValue.BackRightPerspective;
presetShadow.ColorFormat.Color = Color.LightGray;
shape3.EffectDag.PresetShadowEffect = presetShadow;
步骤6:添加一个带箭头的直线
IAutoShape shape4 = slide.Shapes.AppendShape(ShapeType.Line, new RectangleF(, , , ));
shape4.ShapeStyle.LineColor.Color = Color.Red;
shape4.Line.LineEndType = LineEndType.StealthArrow;
shape4.Rotation = -;//设置形状旋转角度
步骤7:绘制一个圆形、五角星,并设置光边效果,将拉个形状组合
//添加一个圆形
IAutoShape shape5 = slide.Shapes.AppendShape(ShapeType.Ellipse, new RectangleF(, , , ));
shape5.Fill.FillType = FillFormatType.Solid;
shape5.Fill.SolidColor.Color = Color.White;
shape5.Line.FillType = FillFormatType.Solid;
shape5.Line.SolidFillColor.Color = Color.Red; //添加一个五角星形状
IAutoShape shape6 = slide.Shapes.AppendShape(ShapeType.FivePointedStar, new RectangleF(, , , ));
shape6.Fill.FillType = FillFormatType.Solid;
shape6.Fill.SolidColor.Color = Color.Orange;
shape6.Line.FillType = FillFormatType.None;
//设置五角星形状的光边效果
GlowEffect glow = new GlowEffect();
glow.ColorFormat.Color = Color.Yellow;
glow.Radius = 7.0;
shape6.EffectDag.GlowEffect = glow; //将shape5和shape6两个形状组合
ArrayList list = new ArrayList();
list.Add(shape5);
list.Add(shape6);
ppt.Slides[].GroupShapes(list);
步骤8:保存文档
ppt.SaveToFile("result.pptx", FileFormat.Pptx2010);
完成代码后,调试运行程序,生成文档,如下图

全部代码:
using Spire.Presentation;
using Spire.Presentation.Drawing;
using System.Collections;
using System.Drawing; namespace DrawShape_PPT
{
class Program
{
static void Main(string[] args)
{
//新建一个幻灯片文档,并指定幻灯片大小
Presentation ppt = new Presentation();
ppt.SlideSize.Type = SlideSizeType.Screen16x9; //获取第一张幻灯片
ISlide slide = ppt.Slides[]; //添加一个云朵形状,并填充渐变颜色
IAutoShape shape1 = slide.Shapes.AppendShape(ShapeType.CalloutCloud, new RectangleF(, , , ));
shape1.Fill.FillType = FillFormatType.Gradient;
shape1.Fill.Gradient.GradientStops.Append(, Color.Blue);
shape1.Fill.Gradient.GradientStops.Append(, Color.Azure);
shape1.Line.FillType = FillFormatType.None; //在形状中绘制文本,并设置字体、字号、字体颜色等
shape1.AppendTextFrame("HOW??");
TextRange textRange = (shape1 as IAutoShape).TextFrame.TextRange;
textRange.FontHeight = ;
textRange.LatinFont = new TextFont("Arial");
textRange.Fill.FillType = FillFormatType.Solid;
textRange.Fill.SolidColor.Color = Color.White; //添加一个椭圆,并用图片填充形状
IAutoShape shape2 = slide.Shapes.AppendShape(ShapeType.Ellipse, new RectangleF(, , , ));
string picPath = "sk.png";
shape2.Fill.FillType = FillFormatType.Picture;
shape2.Fill.PictureFill.Picture.Url = picPath;
shape2.Fill.PictureFill.FillType = PictureFillType.Stretch;
shape2.Line.FillType = FillFormatType.None; //添加一个三角形,填充颜色并设置形状边框样式
IAutoShape shape3 = slide.Shapes.AppendShape(ShapeType.Triangle, new RectangleF(, , , ));
shape3.Fill.FillType = FillFormatType.Solid;
shape3.Fill.SolidColor.Color = Color.Wheat;
shape3.Line.Width = ;
shape3.Line.DashStyle = LineDashStyleType.Dash;
shape3.ShapeStyle.LineColor.Color = Color.Red; //设置形状阴影效果
PresetShadow presetShadow = new PresetShadow();
presetShadow.Preset = PresetShadowValue.BackRightPerspective;
presetShadow.ColorFormat.Color = Color.LightGray;
shape3.EffectDag.PresetShadowEffect = presetShadow; //添加一个带箭头的直线
IAutoShape shape4 = slide.Shapes.AppendShape(ShapeType.Line, new RectangleF(, , , ));
shape4.ShapeStyle.LineColor.Color = Color.Red;
shape4.Line.LineEndType = LineEndType.StealthArrow;
shape4.Rotation = -;//设置形状旋转角度 //添加一个圆形
IAutoShape shape5 = slide.Shapes.AppendShape(ShapeType.Ellipse, new RectangleF(, , , ));
shape5.Fill.FillType = FillFormatType.Solid;
shape5.Fill.SolidColor.Color = Color.White;
shape5.Line.FillType = FillFormatType.Solid;
shape5.Line.SolidFillColor.Color = Color.Red; //添加一个五角星形状
IAutoShape shape6 = slide.Shapes.AppendShape(ShapeType.FivePointedStar, new RectangleF(, , , ));
shape6.Fill.FillType = FillFormatType.Solid;
shape6.Fill.SolidColor.Color = Color.Orange;
shape6.Line.FillType = FillFormatType.None;
//设置五角星形状的光边效果
GlowEffect glow = new GlowEffect();
glow.ColorFormat.Color = Color.Yellow;
glow.Radius = 7.0;
shape6.EffectDag.GlowEffect = glow; //将shape5和shape6两个形状组合
ArrayList list = new ArrayList();
list.Add(shape5);
list.Add(shape6);
ppt.Slides[].GroupShapes(list); //保存文档
ppt.SaveToFile("result.pptx", FileFormat.Pptx2010);
System.Diagnostics.Process.Start("result.pptx");
}
}
}
【示例2】将形状保存为图片
步骤1:加载测试文档
Presentation ppt = new Presentation();
ppt.LoadFromFile("test.pptx");
步骤2:将形状保存为图片
//遍历第一张幻灯片中的所有图形
for (int i = ; i < ppt.Slides[].Shapes.Count; i++)
{
//获取幻灯片中的图形,并保存为.png格式的图片
Image image = ppt.Slides[].Shapes.SaveAsImage(i);
image.Save(String.Format("Picture-{0}.png", i), System.Drawing.Imaging.ImageFormat.Png);
}

全部代码:
using Spire.Presentation;
using System;
using System.Drawing; namespace SaveShapesAsImgs_PPT
{
class Program
{
static void Main(string[] args)
{
//实例化Presentation类的对象,并加载测试文档
Presentation ppt = new Presentation();
ppt.LoadFromFile("test.pptx"); //遍历第一张幻灯片中的所有图形
for (int i = ; i < ppt.Slides[].Shapes.Count; i++)
{
//获取幻灯片中的图形,并保存为.png格式的图片
Image image = ppt.Slides[].Shapes.SaveAsImage(i);
image.Save(String.Format("Picture-{0}.png", i), System.Drawing.Imaging.ImageFormat.Png);
} }
}
}
(本文完)
转载请注明出处。
C# 在PPT中绘制形状(shape)的更多相关文章
- Java 在PPT中绘制图形
Microsoft PowerPoint可支持在幻灯片中插入各种类型的图形并且可设置图形填充.线条颜色.图形大小.位置等.下面将通过Java编程来演示在PPT中绘制图形的方法. 工具:Free Spi ...
- (一)在 Blend 中绘制形状和路径
原文:(一)在 Blend 中绘制形状和路径 https://docs.microsoft.com/zh-cn/previous-versions/jj170881(v=vs.120) 在 Blend ...
- WPF 中的形状和基本绘图概述
本主题概述如何使用 Shape 对象绘图. Shape 是一种允许您在屏幕中绘制形状的 UIElement 类型. 由于它们是 UI 元素,因此 Shape 对象可以在 Panel 元素和大多数控件中 ...
- Android中绘制圆角矩形图片及任意形状图片
圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,因为它避开了直角的生硬,带来更好的用户体验,下面是几个设计的例子: 下面在Android中实现将普通的矩形图片绘制成圆角 ...
- C# 处理PPT水印(三)—— 在PPT中添加多行(平铺)文本水印效果
在PPT幻灯片中,可通过添加形状的方式,来实现类似水印的效果,可添加单一文本水印效果,即幻灯片中只有一个文本水印:也可以添加多行(平铺)文本水印效果,即幻灯片中以一定方式平铺排列多个文本水印效果.本文 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二)
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二) 代码工程地址: https:/ ...
- Office系列(2)---提取Office文件(Word、PPT)中的所有图片
回顾一下上文结尾的问题:如何给文档设置一个合适的封面图?其中一个解决方案就是,获取Office文件内部的图片作为封面.这里就详细介绍下获取图片的几种方式,以及他们各自的优缺点. PS:因为之前用VST ...
- HTML5在canvas中绘制复杂形状附效果截图
HTML5在canvas中绘制复杂形状附效果截图 一.绘制复杂形状或路径 在简单的矩形不能满足需求的情况下,绘图环境提供了如下方法来绘制复杂的形状或路径. beginPath() : 开始绘制一个新路 ...
- css3中的几何图形shape研究
前言 估计大家在日常工作中都会用到css形状,但是目前天朝中使用到最多的估计就是圆(circle).椭圆(ellipse).各种三角形形状,但是你肯定很少看见过用几何图形或者多边图形.假如你不懂什么叫 ...
随机推荐
- 轻量化卷积神经网络MobileNet论文详解(V1&V2)
本文是 Google 团队在 MobileNet 基础上提出的 MobileNetV2,其同样是一个轻量化卷积神经网络.目标主要是在提升现有算法的精度的同时也提升速度,以便加速深度网络在移动端的应用.
- 使用Entity Framework Core访问数据库(Oracle篇)
前言 哇..看看时间 真的很久很久没写博客了 将近一年了. 最近一直在忙各种家中事务和公司的新框架 终于抽出时间来更新一波了. 本篇主要讲一下关于Entity Framework Core访问ora ...
- 《前端之路》之 Babel 下一代 JavaScript 语法编译器
写本章的内容的出发点主要是 为了对于之前关于 JS 版本的一个总结,在之前的开发中,我们始终对于 ECMAScript 的版本的更新不够重视,以至于在后面的 开发过程中,我们始终会被各种新奇的语法打断 ...
- 这年头做开源项目,被冷嘲热讽,FreeSql 0.0.4
FreeSql 项目大概在20天前想着要做的,今天发布0.0.4在群里被一位大神讽刺. 这位无名氏哥们的观点,先声明这不是找安慰的文章,更加不是报复打击的目的. 1 所以这个比EF好在哪里 2 毕竟E ...
- Springboot文件上传代码笔记
1.在src下创建filter包,包内Class名UploadFilter package com.gd.filter; import org.apache.catalina.servlet4prev ...
- Cron表达式详解【转】
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month ...
- 在阿里云服务器中用IP连接SQLserver2014提示40,53错误
在有些时候我们需要他人来连接我们的数据库,这个时候我们需要用我们本地的IP地址来连接,在连接的过程中可能会出现找不到网络路径提示40,53的错误 解决方案: 1.打开配置管理器 2.点开网络配置,点击 ...
- C# 跳转新的标签页
///这个是拿别人的,找到好多这个方法,溜了,不知道谁是原创 protected void btnPrint_Click(object sender, EventArgs e) { ...
- MySQL 四种隔离级别
什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...
- DOM-based XSS Test Cases
Case 23 - DOM Injection via URL parameter (by server + client) https://brutelogic.com.br/dom/dom.php ...