Silverlight实用窍门系列:27.Silverlight二维旋转+平面渐变+动画,模拟雷达扫描图之基本框架【附带源码实例】

简介:

 在现实生活中的雷达运行扫描到物体的某一些属性(比如:速度,频率)超过安全范围值将会报警。在实际的某一些项目中(比如监控系统),我们也想制作一个雷达扫描图来模拟扫描各种设备那么应该如何做呢?

        我们将各种设备作为雷达需要扫描到的点,然后在每次扫描的时候扫描这些点,如果指针扫描碰撞到这些点的时候,会触发一个碰撞实际,以检测设备的项属性是否超过正常范围值。如果超过则让其闪亮不同的颜色。

        本节将讲诉如何制作一个雷达扫描图的基本框架如下。

              第一步制作一个雷达图的背景

              第二步雷达图的指针围绕中心点不停旋转

              第三步为了让雷达图的效果看起来更美观一些,我们应该让指针后面绘画一个倾斜的拖影效果

        首先我们使用PhotoShop绘制一个雷达图的背景图如下:

        2011031716211893.jpg

        接着我们使用DoubleAnimation动画和RotateTransform旋转对象让指针旋转起来,添加一个白色的指针,并且设置白色指针的旋转中心点RenderTransformOrigin="0.0,0.0",现在我们先看XAML代码如下:

< Canvas Margin = " 300 300 0 0 "  Name = " layRoot " >
< Line X1 = " 0 "  Y1 = " 0 "  X2 = " 252 "  Y2 = " 0 "  StrokeThickness = " 1 "  RenderTransformOrigin = " 0.0,0.0 "  Stroke = " #ffffffff "  Fill = " #ffffffff " ></ Line >
</ Canvas >
         为这个白色的指针所属的Canvas设置一个RotateTransform二维坐标的旋转对象,其参数Angle为角度。然后添加一个DoubleAnimation对象来让这个角度在10秒内从360度变化到0度即可,操作的后台代码如下:
复制代码
public   void  AddCanvasTransform()
{
#region  为Canvas添加一个二维 x-y 坐标系内围绕指定点顺时针旋转对象
RotateTransform rTransform 
=   new  RotateTransform();
// 设置旋转的初始角度为360度
rTransform.Angle  =   360 ;
// 设置旋转对象的名称属性为rTrans,让下面的DoubleAnimation使用
rTransform.SetValue(NameProperty,  " rTrans " );
// 将此旋转对象给Canvas
this .layRoot.RenderTransform  =  rTransform;
#endregion

#region  设置动画板且让Canvas对象内的物品以某点位圆心360度旋转下去
// 设置一个DoubleAnimation动画来翻转这个旋转对象。
Storyboard sboard  =   new  Storyboard();
DoubleAnimation danima 
=   new  DoubleAnimation(); // 设置rectangle1矩形控件的透明度的Double类型数字变化
// 设置DoubleAnimation动画的作用对象名称和作用对象属性
danima.SetValue(Storyboard.TargetNameProperty,  " rTrans " );
danima.SetValue(Storyboard.TargetPropertyProperty, 
new  PropertyPath( " RotateTransform.Angle " ));
// 在10秒的时间内让动画作用的角度属性从360到0,且永远循环下去
danima.From  =   360 ; danima.To  =   0 ;
danima.Duration 
=   new  Duration( new  TimeSpan( 0 0 10 ));
danima.RepeatBehavior 
=  RepeatBehavior.Forever;
sboard.Children.Add(danima);
LayoutRoot.Resources.Add(
" colorboard " , sboard);
sboard.Begin();
#endregion
}
复制代码
        最后为指针添加一个拖影效果,让指针在旋转的时候有一个拖影,使其更为美观。在这里我们使用一个矩形控件,让其产生一个渐变效果(采用LinearGradientBrush渐变对象),再旋转一下它的角度即可完成。这个矩形控件也放在Canvas对象里面那么他就会跟着白色雷达指针一起旋转,其XAML代码如下:
复制代码
< Rectangle x:Name = " rectangle "  Height = " 60 "  Width = " 253 "  RenderTransformOrigin = " 0.0,0.0 " >
< Rectangle.Fill >
< LinearGradientBrush EndPoint = " 0.5,1 "  MappingMode = " RelativeToBoundingBox "  StartPoint = " 0.5,0 " >
< LinearGradientBrush.RelativeTransform >
< CompositeTransform CenterY = " 0.5 "  CenterX = " 0.5 "  Rotation = " 39.2 " />
</ LinearGradientBrush.RelativeTransform >
< GradientStop Color = " #8Dffffff " />
< GradientStop Color = " #00ffffff "  Offset = " 0.483 " />
< GradientStop Color = " Transparent "  Offset = " 1 " />
</ LinearGradientBrush >
</ Rectangle.Fill >
</ Rectangle >
复制代码

        完整的MainPage.xaml代码如下:

ContractedBlock.gif MainPage.xaml

        完整的MainPage.xaml.cs文件代码如下:

ContractedBlock.gif MainPage.xaml.cs

        本实例采用VS2010+Silverlight4.0编写,如需源码 SLRandar.rar 点击下载。本实例也可以点击一下图片预览效果:

相关文章
|
容器
Silverlight & Blend动画设计系列二:旋转动画(RotateTransform)
原文:Silverlight & Blend动画设计系列二:旋转动画(RotateTransform)   Silverlight的基础动画包括偏移、旋转、缩放、倾斜和翻转动画,这些基础动画毫无疑问是在Silverlight中使用得最多的动画效果,其使用也是非常简单的。
965 0
|
容器 数据可视化 内存技术
Silverlight & Blend动画设计系列一:偏移动画(TranslateTransform)
原文:Silverlight & Blend动画设计系列一:偏移动画(TranslateTransform)   用户界面组件、图像元素和多媒体功能可以让我们的界面生动活泼,除此之外,Silverlight还具备动画功能,它可以让应用程序“动起来”。
794 0
Silverlight & Blend动画设计系列四:倾斜动画(SkewTransform)
原文:Silverlight & Blend动画设计系列四:倾斜动画(SkewTransform)   Silverlight中的倾斜变化动画(SkewTransform)能够实现对象元素的水平、垂直方向的倾斜变化动画效果。
795 0
|
容器
Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)
原文:Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)   正如你所看到的,Blend是一个非常强大的节约时间的设计工具,在Blend下能够设计出很多满意的动画作品,或许他具体是怎么实现的,通过什么方式实现的我们还是一无所知。
911 0
Silverlight & Blend动画设计系列七:模糊效果(BlurEffect)与阴影效果(DropShadowEffect)
原文:Silverlight & Blend动画设计系列七:模糊效果(BlurEffect)与阴影效果(DropShadowEffect)   模糊效果(BlurEffect)与阴影效果(DropShadowEffect)是两个非常实用和常用的两个特效,比如在开发相册中,可以对照片的缩略图添加模糊效果,在放大照片的过程中动态改变照片的大小和模糊的透明度来达到一个放大透明的效果。
1045 0
Silverlight & Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化、波感特效
原文:Silverlight & Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化、波感特效   当我们在进行Silverlight & Blend进行动画设计的过程中,可能需要设计出很多效果不一的图形图像出来作为动画的基本组成元素。
1001 0
|
API
Silverlight & Blend动画设计系列十:Silverlight中的坐标系统(Coordinate System)与向量(Vector)运动
原文:Silverlight & Blend动画设计系列十:Silverlight中的坐标系统(Coordinate System)与向量(Vector)运动   如果我们习惯于数学坐标系,那么对于Silverlight中的坐标系可能会有些不习惯。
1228 0
|
UED
Silverlight & Blend动画设计系列九:动画(Animation)与视图状态管理(Visual State Manager)
原文:Silverlight & Blend动画设计系列九:动画(Animation)与视图状态管理(Visual State Manager)   Silverlight中的动画(Animation)与视图状态管理(Visual State Manager) 结合使用是非常常见的,动画用于管理对象在某段事件段内执行的动画动作,视图状态管理则用于控制对象在多个不同的视觉状态之间切换、导航。
768 0
Silverlight & Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)
原文:Silverlight & Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)   在Silverlight中自身并没有提供拖放功能的相关实现,要实现拖放功能得借助其事件支持(MouseLeftButtonDown、MouseLeftButtonUp和MouseMove)来完成,实际应用中我们可以通过行为(Behavior)特性将拖放操作封装为行为,这样可达到代码复用的效果。
1045 0
Silverlight & Blend动画设计系列十三:三角函数(Trigonometry)动画之飘落的雪花(Falling Snow)
原文:Silverlight & Blend动画设计系列十三:三角函数(Trigonometry)动画之飘落的雪花(Falling Snow)   平时我们所看到的雪花(Falling Snow)飘飘的效果实际上也是一个动画,是由许多的动画对象共同完成的一个界面效果。
932 0

热门文章

最新文章