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).各种三角形形状,但是你肯定很少看见过用几何图形或者多边图形.假如你不懂什么叫 ...
随机推荐
- ALS交替最小二乘法总结
摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 6.适用场合 内容: 1.算法概述 ALS是alternating least squares的缩写 , 意 ...
- 从YOLOv1到v3的进化之路
引言:如今基于深度学习的目标检测已经逐渐成为自动驾驶,视频监控,机械加工,智能机器人等领域的核心技术,而现存的大多数精度高的目标检测算法,速度较慢,无法适应工业界对于目标检测实时性的需求,这时YOLO ...
- Python爬虫入门教程 64-100 反爬教科书级别的网站-汽车之家,字体反爬之二
说说这个网站 汽车之家,反爬神一般的存在,字体反爬的鼻祖网站,这个网站的开发团队,一定擅长前端吧,2019年4月19日开始写这篇博客,不保证这个代码可以存活到月底,希望后来爬虫coder,继续和汽车之 ...
- ASP.Net Core Razor+AdminLTE 小试牛刀
AdminLTE 一个基于 bootstrap 的轻量级后台模板,这个前端界面个人感觉很清爽,对于一个大后端的我来说,可以减少较多的时间去承担前端的工作但又必须去独立去完成一个后台系统开发的任务,并且 ...
- CSS3 之 童年的纸飞机
今天我们来折纸飞机(可以飞出去的那种哦) 基本全用css来实现,只有一小部分的js 首先看一下飞机的构造 灰色区域为可折叠区域 白色区域为机身 三角形由border画出来的再经过各种平移翻转变成上图 ...
- Docker 快速开始
1. 概念 对于开发人员和系统管理员来说,Docker是一个使用容器开发.部署和运行应用程序的平台.使用Linux容器部署应用程序称为容器化.容器并不新鲜,但是将它们用于轻松部署应用程序却很新鲜. ...
- Android进程间通信(一):AIDL使用详解
一.概述 AIDL是Android Interface Definition Language的缩写,即Android接口定义语言.它是Android的进程间通信比较常用的一种方式. Android中 ...
- 使用Springboot + Gradle快速整合Mybatis-Plus
使用Springboot + Gradle快速整合Mybatis-Plus 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] MyBatis-Plus(简称 MP)是一个 MyBatis ...
- Python中最好用的命令行解析工具:argparse
Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...
- ASP.NET Razor
一.为什么要学习Razor? 可以让服务器代码(就是c#和vb)嵌入到网页中,也就是说这个页面中包含html代码和C#(vb)代码.基于服务器的代码可以在网页传送给浏览器时,创建动态 Web 内容.当 ...