博客
关于我
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 精选 60 道面试题(含答案)
查看>>
mysql 索引
查看>>
MySQL 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>
MySQL 索引的面试题总结
查看>>
mysql 索引类型以及创建
查看>>
MySQL 索引连环问题,你能答对几个?
查看>>
Mysql 索引问题集锦
查看>>
Mysql 纵表转换为横表
查看>>
mysql 编译安装 window篇
查看>>
mysql 网络目录_联机目录数据库
查看>>
MySQL 聚簇索引&&二级索引&&辅助索引
查看>>
Mysql 脏页 脏读 脏数据
查看>>
mysql 自增id和UUID做主键性能分析,及最优方案
查看>>
Mysql 自定义函数
查看>>
mysql 行转列 列转行
查看>>
Mysql 表分区
查看>>
mysql 表的操作
查看>>
mysql 视图,视图更新删除
查看>>