`
insertyou
  • 浏览: 899184 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Silverlight & Blend动画设计系列十三:三角函数(Trigonometry)动画之飘落的雪花(Falling Snow)

阅读更多

  平时我们所看到的雪花(Falling Snow)飘飘的效果实际上也是一个动画,是由许多的动画对象共同完成的一个界面效果。对于不同大小的雪片可以通过缩放变换(ScaleTransform)功能特性确定,雪片飘落是存在于一个空间之中,通过不同的透明度值可使雪花看上去具有一定的空间视觉,雪花的飘落过程是由三角函数的原理实现的左右滑落效果,并可根据随机生成数字作为雪花飘落的速度。

雪花UserControl
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><Canvasx:Name="LayoutRoot">
<PathData="F1M24.667480,10.681641L24.017578,9.555176L21.143066,9.555176L22.395996,7.384766L
21.746094,6.258301L20.445313,6.258301L18.541992,9.555176L14.284668,9.555176L
16.413574,5.868652L20.220215,5.868652L20.870605,4.742188L20.220215,3.615723L
17.713379,3.615723L19.151367,1.126465L18.500977,0.000000L17.200195,0.000000L
15.763184,2.489746L14.509766,0.318848L13.209473,0.318848L12.559082,1.444824L
14.462402,4.742188L12.333984,8.428711L10.205078,4.742188L12.108887,1.444824L
11.458496,0.318848L10.157715,0.318848L8.904785,2.489746L7.467285,0.000000L
6.166992,0.000000L5.516602,1.126465L6.954102,3.615723L4.447266,3.615723L
3.796875,4.742188L4.447266,5.868652L8.254395,5.868652L10.383301,9.555176L
6.125977,9.555176L4.222656,6.258301L2.921875,6.258301L2.271484,7.384766L
3.524902,9.555176L0.650391,9.555176L0.000000,10.681641L0.650391,11.807617L
3.524902,11.807617L2.271484,13.978516L2.921875,15.104980L4.222656,15.104980L
6.125977,11.807617L10.383301,11.807617L8.254395,15.494629L4.447266,15.494629L
3.796875,16.621094L4.447266,17.747070L6.954102,17.747070L5.516602,20.236816L
6.166992,21.363281L7.467285,21.363281L8.904785,18.873535L10.157715,21.044434L
11.458496,21.044434L12.108887,19.917969L10.205078,16.621094L12.333984,12.934082L
14.462402,16.621094L12.559082,19.917969L13.209473,21.044434L14.509766,21.044434L
15.762695,18.873535L17.200195,21.363281L18.500977,21.363281L19.151367,20.236816L
17.713379,17.747070L20.220215,17.747070L20.870605,16.621094L20.220215,15.494629L
16.413574,15.494629L14.284668,11.807617L18.541992,11.807617L20.445313,15.104980L
21.746094,15.104980L22.395996,13.978516L21.143066,11.807617L24.017578,11.807617L
24.667480,10.681641Z"Fill="#FFFFFFFF"Width="24"Height="24"RenderTransformOrigin="0.5,0.5">
<Path.RenderTransform>
<TransformGroup>
<ScaleTransformx:Name="ScaleFlake"ScaleX="1"ScaleY="1"/>
<RotateTransformx:Name="RotateFlake"Angle="0"/>
</TransformGroup>
</Path.RenderTransform>
</Path>
</Canvas>

  通过路径(Path)可绘制雪花界面,为此只需要提供一个根据不同参数构造不同的雪花界面效果的接口,既构造方法:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->//根据不同的参数构造雪花对象
publicSnowflake(doubleLeft,doubleTop,doubleOpacity)
{
InitializeComponent();

//随机速度
Speed=Rand.Next(5);
if(Speed<1)
{
Speed
=1;
}

//随机位置、弧度、角度
DriftPosition=Left;
DriftRange
=Rand.Next(50);
DriftAngle
=Rand.Next(270);

Spin
=Rand.Next(5);

ScaleFlake.ScaleX
=ScaleFlake.ScaleY=Rand.Next(25,100)/100.0;

Canvas.SetLeft(
this,Left);
Canvas.SetTop(
this,Top);
this.Opacity=Opacity;
Position.X
=Left;
Position.Y
=Top;
}

  出了根据不同参数生成雪花对象外,还需提供一个动态改变雪花位置的接口,也就是动态改变雪花的X,Y的坐标值。

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->//根据三角函数计算雪片下落过程(Y坐标)中的左右(X方向)浮动效果
publicvoidMoveFlake()
{
Position.Y
+=Speed;
Position.X
=DriftPosition+Math.Cos(DriftAngle)*DriftRange;

RotateFlake.Angle
+=Spin;

if(Position.Y>AppHeight)
{
Position.Y
=-this.Height;
}

Canvas.SetLeft(
this,Position.X);
Canvas.SetTop(
this,Position.Y);

DriftAngle
+=DriftSpeed;
}

  在主程序中需要定义一个动画,用于控制雪花下落和角度旋转:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><UserControl.Resources>
<Storyboardx:Name="Snowfall"Duration="00:00:00"/>
</UserControl.Resources>

  通过主程序动态的随机构造雪花对象并添加到界面中,然后统一启动动画就实现了飘落的雪花效果,其完整的主控程序如下代码块:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->publicpartialclassMainPage:UserControl
{
privateList<Snowflake>Flake;
privateList<Point>XYStart;
privateList<double>OpacityValue;
privateintMaxFlakes=250;
privateRandomRand=newRandom();

publicMainPage()
{
InitializeComponent();

//雪花集合--初始化250个雪花对象并同事进行动画处理
Flake=newList<Snowflake>(MaxFlakes);
//雪花坐标集合
XYStart=newList<Point>(MaxFlakes);
//不透明度集合
OpacityValue=newList<double>(MaxFlakes);

for(inti=0;i<MaxFlakes;i++)
{
//不同的起止坐标
PointnewPoint=newPoint(Rand.Next((int)LayoutRoot.Width),Rand.Next((int)LayoutRoot.Height));
XYStart.Add(newPoint);
//不同透明度值
OpacityValue.Add(Rand.NextDouble());
}

InitFlakes();
Snowfall.Completed
+=newEventHandler(Snowfall_Completed);
Snowfall.Begin();
}

privatevoidInitFlakes()
{
//循环生成雪花冰添加到界面
for(inti=0;i<MaxFlakes;i++)
{
Snowflakeflake
=newSnowflake(XYStart[i].X,XYStart[i].Y,OpacityValue[i]);
Flake.Add(flake);
flake.AppHeight
=LayoutRoot.Height;
LayoutRoot.Children.Add(flake);
}
}

//动画完成后继续开始动画的执行
privatevoidSnowfall_Completed(objectsender,EventArgse)
{
foreach(SnowflakeflakeinFlake)
{
flake.MoveFlake();
}

Snowfall.Begin();
}
}

        

  推荐资源:

  Silverlight & Blend动画设计系列文章

  《Function Silverlight 3 Animation》----本篇中使用的示例素材选自此书

  

分享到:
评论

相关推荐

    Silverlight及Blend学习电子书(一)

    【标题】"Silverlight及Blend学习电子书(一)"所涵盖的知识点主要集中在Microsoft的两个关键技术上:Silverlight和 Blend。Silverlight是微软推出的一种基于浏览器的插件技术,用于创建丰富的交互式Web应用程序,它...

    学习Blend制作WPF的循环动画、路径动画

    在本文中,我们将深入探讨如何使用Blend for Visual Studio来创建WPF应用中的循环动画和路径动画。Blend是一款强大的设计工具,它可以与Visual Studio配合使用,为Windows Presentation Foundation(WPF)应用程序...

    [最新出版Silverlight及Blend学习电子书教程合集]

    1. **直观的可视化设计**:Blend提供了一个所见即所得的设计环境,让设计师可以直观地设计布局、调整颜色、设置动画,无需编写代码。 2. **丰富的图形和形状工具**:内置的画刷、形状工具和路径编辑器帮助设计师...

    Silverlight页面跳转动画示例

    8. ** Blend工具**:Microsoft Expression Blend是设计Silverlight应用的强大工具,它提供了直观的界面来创建和编辑动画,使得非编程背景的设计者也能参与到动画的设计中。 通过以上知识点,我们可以构建出富有吸引...

    [2008年最新出版Silverlight及Blend学习电子书教程合集]

    【标题】"2008年最新出版Silverlight及Blend学习电子书教程合集"指出,这是一套针对 Silverlight 和 Blend 技术的教育资料,出版于2008年,旨在帮助学习者深入理解和掌握这两个技术。Silverlight是微软推出的一个...

    Expression Blend 4中文版WPF和Silverlight项目设计基础.pdf

    Expression Blend 4中文版WPF和Silverlight项目设计基础.pdf

    利用Blend制作动画生成WPF控件

    在本文中,我们将深入探讨如何使用 Blend 这一强大的设计工具来创建动态的WPF(Windows Presentation Foundation)应用程序,特别是实现“弧形转动动画”。Blend 是 Microsoft 针对WPF开发的一个可视化设计工具,它...

    Silverlight4 Blend SDK 中文文档

    Silverlight4 Blend SDK 中文文档

    Blend自带Silverlight示例MagnifyingGlass(放大镜)

    Blend 是 Microsoft 提供的一款强大的设计工具,用于创建丰富的用户体验,特别是针对 Silverlight 和 WPF 平台。Silverlight 是一种浏览器插件技术,用于构建具有交互性和富媒体内容的Web应用程序。 ...

    使用Expression Blend 创建的Silverlight 时钟

    在本文中,我们将深入探讨如何使用Microsoft Expression Blend创建一个功能完备的Silverlight时钟应用。Silverlight是一种强大的RIA(Rich Internet Application)开发平台,它允许开发者构建交互式、丰富的网络应用...

    ExpressionBlend4中文版WPF和Silverlight项目设计基础

    《Expression Blend 4中文版WPF和Silverlight项目设计基础》是一本专为初学者和有一定基础的开发者设计的教程,旨在深入浅出地讲解如何使用Microsoft Expression Blend 4进行Windows Presentation Foundation (WPF)...

    Expression Blend实例中文教程系列

    《Expression Blend实例中文教程系列》是由CSDN社区Silverlight版主jv9精心编写的教程,旨在帮助开发者深入理解和高效使用Expression Blend这一强大的设计工具。教程分为基础篇和实例篇,作者以其丰富的实际开发经验...

    Foundation Expression Blend 4 with Silverlight 4

    Foundation Expression Blend 4 with Silverlight 4 takes you through your first steps in creating Rich Internet Applications (RIAs) using the latest release of Microsoft’s technology. You’ll explore ...

    blend 4UI设计工具

    "Blend 4 UI设计工具"是一款专为Windows Presentation Foundation (WPF) 平台打造的高效用户界面(UI)设计框架,它集成了SketchFlow功能,使得UI设计师能够以更直观、灵活的方式创建和设计应用程序的交互原型。...

    经典blend+silverlight中文教程

    《经典Blend+Silverlight中文教程》是一份专为学习 Blend 和 Silverlight 技术的中文教程,对于希望深入了解这两种技术的开发者来说,无疑是一份宝贵的资料。Blend 是微软推出的一款强大的设计工具,它使得开发者...

    Silverlight 2.0 发现之旅系列课程(1):Silverlight 2.0 北极站

    **Silverlight 2.0 发现之旅系列课程(1):Silverlight 2.0 北极站** 本文将深入探讨Microsoft Silverlight 2.0,这是一个强大的开发平台,用于构建丰富的、交互式的Web应用程序。Silverlight 2.0是微软在2008年推出...

    Blend实战开发技巧

    《Blend实战开发技巧》是关于使用Microsoft Expression Blend进行高效、美观的用户界面开发的实践指南。这本书深入浅出地介绍了如何利用Blend的强大功能,为Silverlight应用打造出引人入胜的交互体验。以下是对 ...

    Silverlight 2.0 发现之旅系列课程(2):Silverlight 2.0 开罗站

    **Silverlight 2.0 发现之旅系列课程(2):Silverlight 2.0 开罗站** 在本文中,我们将深入探讨Silverlight 2.0这一强大的富互联网应用程序(RIA)开发平台,特别是通过“开罗站”的课程内容。 Silverlight是由微软...

    blend4动画教程

    Blend4 是一款强大的可视化设计工具,主要用于创建富有动态效果和交互性的应用程序,尤其在Silverlight和WPF平台上。本教程主要讲解如何利用Blend4进行动画和特效的制作。 在 Blend4 中,你可以发现资源面板提供了...

Global site tag (gtag.js) - Google Analytics