快速业务通道

使用silverlight构建一个工作流设计器(十)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22

源代码下载:http://www.shareidea.net/opensource.htm

在线演示:http://www.shareidea.net/workflow.htm

视频教程: http://www.shareidea.net/video/sharedesigner/sharedesigner.htm

六 增强的用户体验功能

6.6 增加动画效果

上一章我们给菜单增加了动画效果,这一章里面我们继续增加动画效果,包括:

新增活动的淡入效果

删除活动的淡出效果

新增规则的淡入效果

删除规则的淡出效果

本文源地址: http://www.cnblogs.com/chegan/archive/2009/05/13/1455307.htm

6.6.1 淡入效果

这些动画的实现比较简单,首先需要增加一个DoubleAnimation对象,xaml代码如下:

<Storyboard  x:Name="sbDisplay">
<DoubleAnimation   From="0" To="0.8" Duration="00:00:1.0" 
Storyboard.TargetName="" 
Storyboard.TargetProperty="Opacity" >
</DoubleAnimation>
</Storyboard>

TargetName 指出实现动画效果的对象。

TargetProperty 指出对象的那个属性实现动画

From 指出TargetProperty的初始值

To 指出TargetProperty的最终值

Duration 指出动画的持续时间

这些属性值也可以在后台使用c#代码来设置。在我使用的过程中,使用了

Storyboard.SetTargetName(sbDisplay, "currentPic");

来动态设置动画的TargetName值,但在运行过程中总是错误,如下图所示:

好像和命名空间有关,后来使用

Storyboard.SetTarget(sbDisplay, currentPic);

才得到正确结果,如果您对此有了解,请帮忙给出原因。

另外 TargetProperty 属性也支持用户自定义的属性,这个我们自定义动画效果提供了很大的方便,本程序中也使用了这个特性。

在活动和规则的构造函数中调用动画的开始函数,即可实现活动和规则的淡入显示效果。

sbDisplay.Begin();

6.6.2 淡出效果

和淡入效果有两点不同

DoubleAnimation的From和To属性和淡入效果的正好对调

淡出效果不能在删除规则的函数中实现,因为删除以后,就看不到对象了,所以要修改一下删除对象的函数方法。首先播放淡出动画效果,并设置动画播放完毕的事件,在完毕事件中进行对象的删除。如下所示:

booisDeleted = false;
public void Delete()
{ 
if (!isDeleted)
{
isDeleted = true;
sdPicture.ColseAnimationCompleted += new ColseAnimationCompletedDelegate(sdPicture_ColseAnimationCompleted);
sdPicture.ShowCloseAnimation();
}
}
void sdPicture_ColseAnimationCompleted(object sender, EventArgs e)
{
if (isDeleted)
{
if (this.BeginRuleCollections != nul)
{
foreach (Rule r in this.BeginRuleCollections)
{
r.RemoveBeginActivity(this);
}
}
if (this.EndRuleCollections != nul)
{
foreach (Rule r in this.EndRuleCollections)
{
r.RemoveEndActivity(this);
}
}
if (DeleteActivity != nul)
DeleteActivity(this); 
_container.RemoveActivity(this); 
}
}

6.7 使用不同的活动对象图片

在前面的章节中,对于活动我们都使用一个矩形对象以及对这个矩形对象进行剪裁处理来表示不同类型的互动外观。这种方式代码量少,但是如果表示更复杂的对象图形就无能为力了,在这一章中,我们给不同类型的活动都使用一个用户控件来表示。根据活动的类型分为以下几种:

起始活动

终结活动

分支活动

汇聚活动

交互互动

自动活动

对于不同的活动分别有一个用户控件来表示,这样业务逻辑就比较清晰了。

题外话:xaml的构造方式

本章没有多少技术点需要说的,那么我们就来看一看silverlight的用户控件(.xam)的运行方式。我们新建一个xaml文件SilverlightControl1

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号