彩票走势图

ComponentOne创建基于XAML的图表动画

原创|其它|编辑:郝浩|2012-12-11 15:58:19.000|阅读 408 次

概述:在ComponentOne的最新2012 v3版本中,C1Chart提供了新的动画API,让在图表中加入动画元素变得更加简单。接下来就为大家介绍以下如何使用XAML创建图表动画。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

  在ComponentOne的最新2012 v3版本中,C1Chart控件的功能有了很大的增强,动画功能便是其中之一,C1Chart提供了新的动画API,让在图表中加入动画元素变得更加简单。接下来就为大家介绍以下如何使用XAML创建图表动画

创建方法

  C1Chart中有一个单PlotElementAnimation类,它只有两个属性:Storyboard和SymbolStyle。这两个属性让你可能灵活将动画故事板和风格的任意组合来自定义动画。然后在图表数据对象中将PlotElementAnimation绑定至一个新LoadAnimation属性,并可以完成图表动画的创建。

实例:创建淡入动画

  以下是一个通过改变透明度来实现图表淡入加载效果的代码,通过创建PlotElementAnimation的Storyboard和SymbolStyle属性便可完成。

<c1:C1Chart x:Name="c1Chart1" Palette="Office">
    <c1:C1Chart.Data>
        <c1:ChartData>
            <c1:DataSeries Label="s1" Values="1 2 3 4 5" />
            <c1:ChartData.LoadAnimation>
                <c1:PlotElementAnimation Storyboard="{StaticResource sbOpacity}"
                                         SymbolStyle="{StaticResource styleOpacity}"/>
            </c1:ChartData.LoadAnimation>
        </c1:ChartData>
    </c1:C1Chart.Data>
</c1:C1Chart>

  接下来创建资源

<Style TargetType="c1:PlotElement" x:Key="styleOpacity">
    <Setter Property="Opacity" Value="0" />
</Style>
<Storyboard x:Key="sbOpacity">
    <DoubleAnimation Storyboard.TargetProperty="Opacity"
                     Duration="00:00:01"
                     From="0" To="1"
                     c1:PlotElementAnimation.IndexDelay="0.5"/>
</Storyboard>

  Storyboard和SymbolStyle都是典型的XAML资源,非常简单易用,效果如下。

ComponentOne创建基于XAML的图表动画

实例:创建缩放动画

  创建缩放动画,需要用到Style和Storyboard中的另外两个属性EasingFunction和RenderTransformOrigin。

<Style TargetType="c1:PlotElement" x:Key="styleScale">
    <Setter Property="RenderTransform">
        <Setter.Value>
            <ScaleTransform ScaleX="0" ScaleY="0" />
        </Setter.Value>
    </Setter>
    <Setter Property="RenderTransformOrigin" Value="0.5, 0.5" />
</Style>
<Storyboard x:Key="sbScale">
    <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).ScaleX" Duration="00:00:01" From="0" To="1" c1:PlotElementAnimation.IndexDelay="0.5">
        <DoubleAnimation.EasingFunction>
            <CubicEase EasingMode="EaseInOut" />
        </DoubleAnimation.EasingFunction>
    </DoubleAnimation>
    <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).ScaleY" Duration="00:00:00" From="0" To="1">
        <DoubleAnimation.EasingFunction>
            <CubicEase EasingMode="EaseInOut" />
        </DoubleAnimation.EasingFunction>
    </DoubleAnimation>
</Storyboard>

  只需将Scale属性之一为0,就可以创建以下效果。

ComponentOne创建基于XAML的图表动画

实例:创建旋转动画

  使用RotateTransform便可以创建旋转动画,还可以自定义原点(RenderTransformOrigin

<Style TargetType="c1:PlotElement" x:Key="styleRotate">
    <Setter Property="RenderTransform">
        <Setter.Value>
            <RotateTransform Angle="180" />
        </Setter.Value>
    </Setter>
    <Setter Property="RenderTransformOrigin" Value="0.5, 0.5" />
</Style>
<Storyboard x:Key="sbRotate">
    <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).Angle" Duration="00:00:01" To="1" c1:PlotElementAnimation.IndexDelay="0.5">
        <DoubleAnimation.EasingFunction>
            <BackEase EasingMode="EaseIn"  Amplitude="5" />
        </DoubleAnimation.EasingFunction>
    </DoubleAnimation>
</Storyboard>

ComponentOne创建基于XAML的图表动画

实例:创建复合动画

  在Style资源中使用TransformGroup,就能够创建复合动画了。

<Style TargetType="c1:PlotElement" x:Key="styleComposite">
    <Setter Property="RenderTransform">
        <Setter.Value>
            <TransformGroup>
                <ScaleTransform ScaleX="0" ScaleY="0" />
                <RotateTransform Angle="180" />
            </TransformGroup>
        </Setter.Value>
    </Setter>
    <Setter Property="RenderTransformOrigin" Value="0.5, 0.5" />
    <Setter Property="Opacity" Value="0" />
</Style>
<Storyboard x:Key="sbComposite">
    <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="00:00:01" From="0" To="1"
                     c1:PlotElementAnimation.IndexDelay="1"/>
    <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[0].ScaleX" Duration="00:00:01" From="0" To="1"
                     c1:PlotElementAnimation.IndexDelay="1">
        <DoubleAnimation.EasingFunction>
            <CubicEase EasingMode="EaseInOut" />
        </DoubleAnimation.EasingFunction>
    </DoubleAnimation>
    <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[0].ScaleY" Duration="00:00:01" From="0" To="1">
        <DoubleAnimation.EasingFunction>
            <CubicEase EasingMode="EaseInOut" />
        </DoubleAnimation.EasingFunction>
    </DoubleAnimation>
    <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[1].Angle" Duration="00:00:01" To="1"
                     c1:PlotElementAnimation.IndexDelay="1">
        <DoubleAnimation.EasingFunction>
            <BackEase />
        </DoubleAnimation.EasingFunction>
    </DoubleAnimation>
</Storyboard>

ComponentOne创建基于XAML的图表动画

 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP