博客
关于我
C#/VB.NET 自定义动画路径
阅读量:421 次
发布时间:2019-03-06

本文共 4512 字,大约阅读时间需要 15 分钟。

PPT中的动画效果可分为已有内置动画以及自定义动画。设置内置动画,只需直接指定动画效果类型即可。本文主要介绍如何实现自定义动画,即自定义形状动作线性路径。附C#及VB.NET代码供参考。

程序运行环境如下:

  • .Net Framework 4.8
  • Visual Studio
  • Spire.Presentation.dll

所需引用的必要程序集文件如下图:

C#

using Spire.Presentation;using Spire.Presentation.Collections;using Spire.Presentation.Drawing.Animation;using System.Drawing;namespace CustomAnimation{    class Program    {        static void Main(string[] args)        {            //创建一个幻灯片文档(新建的文档已默认包含一页幻灯片)            Presentation ppt = new Presentation();            ISlide slide = ppt.Slides[0];//获取第一页空白幻灯片            //添加形状(指定形状坐标、大小及相关格式设置)            IAutoShape shape = slide.Shapes.AppendShape(ShapeType.FivePointedStar, new RectangleF(100, 50, 180, 180));            shape.Fill.FillType = Spire.Presentation.Drawing.FillFormatType.Gradient;            shape.Fill.Gradient.GradientStops.Append(0, KnownColors.SkyBlue);            shape.Fill.Gradient.GradientStops.Append(1, KnownColors.Pink);            shape.ShapeStyle.LineColor.Color = Color.White;            //给形状设置动画效果            AnimationEffect effect = ppt.Slides[0].Timeline.MainSequence.AddEffect(shape, AnimationEffectType.PathUser);            CommonBehaviorCollection common = effect.CommonBehaviorCollection;            AnimationMotion motion = (AnimationMotion)common[0];            motion.Origin = AnimationMotionOrigin.Layout;            motion.PathEditMode = AnimationMotionPathEditMode.Relative;            MotionPath moinPath = new MotionPath();            moinPath.Add(MotionCommandPathType.MoveTo, new PointF[] { new PointF(0, 0) }, MotionPathPointsType.CurveAuto, true);            moinPath.Add(MotionCommandPathType.LineTo, new PointF[] { new PointF(0.18f, 0.18f) }, MotionPathPointsType.CurveAuto, true);            moinPath.Add(MotionCommandPathType.LineTo, new PointF[] { new PointF(-0.1f, 0.2f) }, MotionPathPointsType.CurveAuto, true);            moinPath.Add(MotionCommandPathType.LineTo, new PointF[] { new PointF(0.25f, 0.2f) }, MotionPathPointsType.CurveAuto, true);            moinPath.Add(MotionCommandPathType.End, new PointF[] { }, MotionPathPointsType.CurveStraight, true);            motion.Path = moinPath;            //保存文档            ppt.SaveToFile("CustomAnimation.pptx", FileFormat.Pptx2013);            System.Diagnostics.Process.Start("CustomAnimation.pptx");        }    }}

 

VB.NET

Imports Spire.PresentationImports Spire.Presentation.CollectionsImports Spire.Presentation.Drawing.AnimationImports System.DrawingNamespace CustomAnimation    Class Program        Private Shared Sub Main(args As String())            '创建一个幻灯片文档(新建的文档已默认包含一页幻灯片)            Dim ppt As New Presentation()            Dim slide As ISlide = ppt.Slides(0)            '获取第一页空白幻灯片            '添加形状(指定形状坐标、大小及相关格式设置)            Dim shape As IAutoShape = slide.Shapes.AppendShape(ShapeType.FivePointedStar, New RectangleF(100, 50, 180, 180))            shape.Fill.FillType = Spire.Presentation.Drawing.FillFormatType.Gradient            shape.Fill.Gradient.GradientStops.Append(0, KnownColors.SkyBlue)            shape.Fill.Gradient.GradientStops.Append(1, KnownColors.Pink)            shape.ShapeStyle.LineColor.Color = Color.White            '给形状设置动画效果            Dim effect As AnimationEffect = ppt.Slides(0).Timeline.MainSequence.AddEffect(shape, AnimationEffectType.PathUser)            Dim common As CommonBehaviorCollection = effect.CommonBehaviorCollection            Dim motion As AnimationMotion = DirectCast(common(0), AnimationMotion)            motion.Origin = AnimationMotionOrigin.Layout            motion.PathEditMode = AnimationMotionPathEditMode.Relative            Dim moinPath As New MotionPath()            moinPath.Add(MotionCommandPathType.MoveTo, New PointF() {New PointF(0, 0)}, MotionPathPointsType.CurveAuto, True)            moinPath.Add(MotionCommandPathType.LineTo, New PointF() {New PointF(0.18F, 0.18F)}, MotionPathPointsType.CurveAuto, True)            moinPath.Add(MotionCommandPathType.LineTo, New PointF() {New PointF(-0.1F, 0.2F)}, MotionPathPointsType.CurveAuto, True)            moinPath.Add(MotionCommandPathType.LineTo, New PointF() {New PointF(0.25F, 0.2F)}, MotionPathPointsType.CurveAuto, True)            moinPath.Add(MotionCommandPathType.[End], New PointF() {}, MotionPathPointsType.CurveStraight, True)            motion.Path = moinPath            '保存文档            ppt.SaveToFile("CustomAnimation.pptx", FileFormat.Pptx2013)            System.Diagnostics.Process.Start("CustomAnimation.pptx")        End Sub    End ClassEnd Namespace

动画效果:

 

原创内容,转载务必注明出处!

 

你可能感兴趣的文章
MySQL 数据库的高可用性分析
查看>>
Mysql 数据库重置ID排序
查看>>
Mysql 数据类型一日期
查看>>
MySQL 数据类型和属性
查看>>
mysql 敲错命令 想取消怎么办?
查看>>
Mysql 整形列的字节与存储范围
查看>>
mysql 断电数据损坏,无法启动
查看>>
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>