- 51aspx源码必读.txt[3KB]
- from.gif[4KB]
- SLRandar.sln[1KB]
- 最新Asp.Net源码下载.url[125B]
源码介绍
Silverlight模拟雷达扫描点状态源码
在现实生活中的雷达运行扫描到物体的某一些属性(比如:速度,频率)超过安全范围值将会报警。在实际的某一些项目中(比如监控系统),我们也想制作一个雷达扫描图来模拟扫描各种设备那么应该如何做呢?
我们将各种设备作为雷达需要扫描到的点,然后在每次扫描的时候扫描这些点,如果指针扫描碰撞到这些点的时候,会触发一个碰撞实际,以检测设备的项属性是否超过正常范围值。如果超过则让其闪亮不同的颜色。
本节将讲诉如何制作一个雷达扫描图的基本框架如下。
第一步制作一个雷达图的背景
第二步雷达图的指针围绕中心点不停旋转
第三步为了让雷达图的效果看起来更美观一些,我们应该让指针后面绘画一个倾斜的拖影效果
雷达扫描图中当雷达指针转动扫描到某一个点上的时候,判断这个点的CPU值是否已经超过60的警戒位置如果超过将此点设置为红色。
在Silverlight中我们的雷达指针是一直在做圆运动的,我们要随时检测雷达指针的位置,以及雷达是否碰撞到一个Device设备了。如果碰撞到了,就检测设备CPU值为多少?在这里我们需要解决两个问题。第一、如何随时观测雷达指针的当前位置?第二、如何检测雷达指针是否碰撞接触到了设备点?
针对第一个问题,需要做以下处理:
在本例中使用Timer控件,每隔50毫秒检测一次当前的雷达指针控件位置
雷达指针的位置根据检测当前雷达指针旋转角度的正余弦函数得到左上角点的X、Y位置,分别加上宽和高得到右下角点的位置。
在本实例中的碰撞检测函数是根据国外友人Andy的两个函数改编而来的,UserControlBounds函数里面获取Point的方式有所不同。
针对第二个问题,我们需要做以下处理:
根据雷达指针的左上角和右下角的两个点的位置构造一个Rect结构A(注意Rect结构描述矩形的宽高和原点),然后同理根据Device自定义控件构造一个Rect结构。
检测者A、B两个Rect是否重合,如果重合则进行像素级别的对比是否碰撞接触在一起。
因为有很多个设备点,所以需要循环检测每一个设备点在某一个时间点是否和雷达指针碰撞。
下载记录(Only Recent 100)
用户名 | 推荐指数 | 下载时间 |
---|