关键帧动画

如果需要创建具体多个分段的动画和不规则移动的动画,这个时候可以使用关键帧动画。关键帧动画是由许多个较短的段构成的动画,每段表示动画的初始值、最终值或中间值。当运行动画时,它平滑的从一个值移动到另一个值。关键帧对象基本上多有Value属性和keyTimes属性。和其他普通动画不同Value属性的数据类型,在LinearPointKeyFrame类中 是Point类型,在DoubleKeyFrame类中是doubles类型。那么制作一个关键帧动画的方法如下:

<Window x:Class="属性样式.动画.关键帧动画"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:local="clr-namespace:属性样式.动画"

        mc:Ignorable="d"

        Title="关键帧动画" Height="300" Width="300">

    <!--窗口资源-->

    <Window.Resources>

        <!--PathGeometry:路径几何对象-->

        <PathGeometry x:Key="path">

            <!--PathFigure路径图-->

            <PathFigure IsClosed="True">

  <!--ArcSegment类:表示两点之间的一条椭圆弧。Size代表圆弧的X,Y轴半径,例子Size="55,20"表示X半径为55,Y轴半径为20的椭圆。SweepDirection获取或设置一个值,该值指定是以Clockwise[指定按顺时针(正角)方向绘制圆弧。] 方向还是以 Counterclockwise [指定按逆时针(负角)方向绘制圆-->

                <ArcSegment Point="50,300" Size="5,10" SweepDirection="Clockwise"/>

                <ArcSegment Point="100,250" Size="5,10"/>

                <ArcSegment Point="120,200" Size="5,10"/>

                <ArcSegment Point="140,150" Size="5,10"/>

                <ArcSegment Point="160,100" Size="5,10"/>

                <ArcSegment Point="180,50" Size="5,10"/>

                <ArcSegment Point="200,0" Size="5,10"/>

                <ArcSegment Point="180,10" Size="5,5"/>

                <ArcSegment Point="160,10" Size="5,10"/>

                <ArcSegment Point="140,60" Size="5,10"/>

                <ArcSegment Point="120,80" Size="5,10"/>

                <ArcSegment Point="100,100" Size="5,10"/>

                <ArcSegment Point="80,120" Size="5,10"/>

                <ArcSegment Point="60,140" Size="5,10"/>

                <ArcSegment Point="40,160" Size="5,10"/>

                <ArcSegment Point="20,180" Size="5,10"/>

                <ArcSegment Point="10,200" Size="5,10"/>

                <ArcSegment Point="0,220" Size="5,10"/>

                <ArcSegment Point="20,240" Size="5,10"/>

                <ArcSegment Point="50,260" Size="5,10"/>

                <ArcSegment Point="70,300" Size="5,10"/>

                <ArcSegment Point="250,230" Size="5,10"/>

            </PathFigure>

        </PathGeometry>

    </Window.Resources>

    <!--窗口触发器-->

    <Window.Triggers>

        <EventTrigger RoutedEvent="Window.Loaded">

            <EventTrigger.Actions>

                <BeginStoryboard>

                    <Storyboard>

                        <!--路径动画-->

                        <!--使用 PathGeometry 创建形状-->

                        <!--RepeatBehavior="Forever":设置RepeatBehavior为永久重复-->

                        <!--RepeatBehavior="Forever":设置RepeatBehavior为永久重复-->

                        <DoubleAnimationUsingPath Storyboard.TargetName="image"

                               Storyboard.TargetProperty="(Canvas.Left)"

                               PathGeometry="{StaticResource path}" Duration="0:0:5"  RepeatBehavior="Forever" Source="X"/>

                        <DoubleAnimationUsingPath Storyboard.TargetName="image"

                               Storyboard.TargetProperty="(Canvas.Top)"

                               PathGeometry="{StaticResource path}" Duration="0:0:5"           RepeatBehavior="Forever" Source="Y"/>

                    </Storyboard>

                </BeginStoryboard>

            </EventTrigger.Actions>

        </EventTrigger>

    </Window.Triggers>

    <!--画布-->

    <Canvas>

        <!--Path:形状绘图路径-->

        <Path Stroke="Red" StrokeThickness="1" Data="{StaticResource path}" Canvas.Top="11.4" Canvas.Left="1.6"/>

        <Image Name="image" Canvas.Left="-4" Canvas.Top="1" RenderTransformOrigin="-2.875,1.042">

            <Image.Source>

                <!--DrawImage是GDI+的Graphics类显示图像的核心方法-->

                <DrawingImage>

                    <DrawingImage.Drawing>

                        <!--Geometry对象并不能作为图像独立呈现出来,因此需要呈现方式:

                              这里是在GeometryDrawing中呈现

                             可以作为GeometryDrawing.Geometry的参数呈现为Drawing对象-->

                  <GeometryDrawing Brush="LightSkyBlue">

                      <GeometryDrawing.Geometry>

                          <GeometryGroup>

                            <EllipseGeometry Center="10,10" RadiusX="9" RadiusY="4"/>

                              <EllipseGeometry Center="10,10" RadiusX="4" RadiusY="9"/>

                          </GeometryGroup>

                       </GeometryDrawing.Geometry>

                        <!--获取或设置用于绘制此 GeometryDrawing 的 Pen。-->

                         <GeometryDrawing.Pen>

                         <!--Pen:用于绘制此 GeometryDrawing 的笔。 默认值为 null。-->

                              <Pen Thickness="1" Brush="Black"/>

                           </GeometryDrawing.Pen>

                        </GeometryDrawing>

                    </DrawingImage.Drawing>

                </DrawingImage>

            </Image.Source>

        </Image>

    </Canvas>

</Window>

如下是执行的结果:

动画会随着图形方向不停的滑动,不断的循环图形

 

 

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值