博客
关于我
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事务与锁机制
查看>>
MTTR、MTBF、MTTF的大白话理解
查看>>
mt_rand
查看>>
mysql -存储过程
查看>>
mysql /*! 50100 ... */ 条件编译
查看>>
mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
查看>>
mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
查看>>
mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
查看>>
mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
查看>>
MySQL 8.0 恢复孤立文件每表ibd文件
查看>>
MySQL 8.0开始Group by不再排序
查看>>
mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
查看>>
multi swiper bug solution
查看>>
MySQL Binlog 日志监听与 Spring 集成实战
查看>>
MySQL binlog三种模式
查看>>
multi-angle cosine and sines
查看>>
Mysql Can't connect to MySQL server
查看>>
mysql case when 乱码_Mysql CASE WHEN 用法
查看>>
Multicast1
查看>>
mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
查看>>