天天看點

28.Silverlight制作随機分布雷達掃描點,模拟雷達掃描圖之被掃描裝置

        實際項目中,我們模拟一個監控多台電腦的雷達掃描圖效果。我們假設發現了很多台裝置,這些裝置具有CPU使用率這個屬性,在雷達掃描的時候,如果CPU的值高于90則報警為紅色。

        本節執行個體建立在上一節的基礎之上,在本節中我們将向雷達掃描圖中随機投放多台裝置點,這些點擁有X坐标和Y坐标的屬性以設定它在雷達掃描圖中的位置,并且有一個閃動的動畫效果。建立一個自定義控件命名為Device.xaml。

        第一步計算裝置的X、Y坐标設定CPU的信号值Value。在這裡使用Random對象rom.Next(Math.Sin(45)*250)函數來随機 得到裝置的X坐标和Y坐标,暫時先以(0,0)點為中心坐标的250半徑的圓圈範圍内,這台裝置在一個坐标系中還有可能出現X或者Y坐标出現負的情況,這 個時候我們可以調用Random随機對象的随機小于2的數,如果為1的話就将随機得到的數設定為負。(注意:Random對象是使用系統時鐘生成其種子值 的,是以在全局範圍内不能出現多個Random對象,否則的話你設定多個Random對象在同一個時間段内時得到的值相同的。解決方法是設定一個 public static的全局随機對象,每次要使用的時候直接調用這個對象的Next()函數即可。)計算出了X、Y坐标之後此時的中心點是按照(0,0)點位置的 坐标,在本項目中的中心點的位置是(300,300),是以X坐标加300,Y坐标加300。另外使用随機對象随機了100以内的數字指派給本裝置的 CPU使用率信号值Value,下面請看代碼:

        第二步開始制作裝置點的動畫效果,在Device.xaml中我們添加兩個一摸一樣的矩形框(RectangleRed、Rectangleblue), 這兩個矩形框是通過CompositeTransform複合變形和漸變得到一個中心白色,外層漸變透明的小圓圈,我們控制RectangleRed小圓 圈的ScaleX和,ScaleY在1秒内從0.3倍變到2倍,同時控制Rectangleblue小圓圈的ScaleX和,ScaleY在1秒内從2倍 變到0.3倍。這樣就得到了一個一直閃動的點,下面請看Xaml代碼:

        最後一步我們在雷達掃描圖初始化的時候建立多個掃描點投放到圖中:

        本節使用VS2010+Silverlight4.0編寫,點選 SLRandarAddPoint.rar 下載下傳源碼,非IE6.0使用者可以點選下圖觀看示範:

28.Silverlight制作随機分布雷達掃描點,模拟雷達掃描圖之被掃描裝置

繼續閱讀