国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

Silverlight實現(xiàn)星星閃爍動畫

2019-10-29 19:59:37
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Silverlight實現(xiàn)星星閃爍動畫展示的具體代碼,供大家參考,具體內容如下

原理很簡單,生成1000個圓,從隨機數(shù)來布置它們的位置,通過動畫來處理它們的透明度,動畫時長也是隨機生成。 

1、創(chuàng)建圖形數(shù)組并設置背景透明,漸變筆觸,大小等,而后加入到Grid元素的子元素集中;
2、創(chuàng)建動畫時間線;
3、加載完成后播放動畫;
4、每一輪動畫播放完畢后,重新隨機生成一下圖形的Margin,動畫的時間長度也是隨機生成。

代碼: 

using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;  namespace RandEllipseSample{  public partial class MainPage : UserControl  {    int shapesCount = 500; //圖形數(shù)組的容量    //隨機大小的上限    int theMaxW = 1300;    int theMaxH = 720;    Random rand = null;    Storyboard story = null;    Ellipse[] myShapes = null;    public MainPage()    {      InitializeComponent();      rand = new Random();      story = new Storyboard();      story.Completed += new EventHandler(story_Completed);      InitShapes();      InitAnimation();      //加載完成后馬上播放動畫      this.Loaded += new RoutedEventHandler(MainPage_Loaded);    }      void MainPage_Loaded(object sender, RoutedEventArgs e)    {      story.Begin();    }      void story_Completed(object sender, EventArgs e)    {      for (int x = 0; x < shapesCount; x++)      {        myShapes[x].Margin = new Thickness(Convert.ToDouble(rand.Next(0, theMaxW)), Convert.ToDouble(rand.Next(0, theMaxH)), 0, 0);      }      InitAnimation();    }      /// <summary>    /// 初始化形狀數(shù)組    /// </summary>    private void InitShapes()    {      myShapes = new Ellipse[shapesCount];      //實例化所有成員      for (int n = 0; n < shapesCount; n++)      {        myShapes[n] = new Ellipse();        myShapes[n].Fill = new SolidColorBrush(Colors.Transparent);        myShapes[n].StrokeThickness = 2d;        //筆觸為線性漸變        LinearGradientBrush gBrush = new LinearGradientBrush();        gBrush.StartPoint = new Point(0, 0);        gBrush.EndPoint = new Point(1, 1);        gBrush.GradientStops.Add(new GradientStop()        {          Color = Colors.Yellow,          Offset = 0        });        gBrush.GradientStops.Add(new GradientStop()        {          Color = Colors.Red,          Offset = 0.25        });        gBrush.GradientStops.Add(new GradientStop()        {          Color = Colors.White,          Offset = 0.5        });        gBrush.GradientStops.Add(new GradientStop()        {          Color = Colors.Blue,          Offset = 0.75        });        myShapes[n].Stroke = gBrush;        //位置        myShapes[n].Margin = new Thickness(Convert.ToDouble(rand.Next(0,theMaxW)), Convert.ToDouble(rand.Next(0,theMaxH)), 0, 0);        //大小        myShapes[n].Width = 10;        myShapes[n].Height = 10;        myShapes[n].HorizontalAlignment = HorizontalAlignment.Left;        myShapes[n].VerticalAlignment = VerticalAlignment.Top;        //加入可視化樹        this.LayoutRoot.Children.Add(myShapes[n]);      }    }      /// <summary>    /// 初始化動畫    /// </summary>    private void InitAnimation()    {      story.Children.Clear();      for (int i = 0; i < shapesCount; i++)      {        int mSecond = rand.Next(0, 5);        //透明度        DoubleAnimation opacityAnimate = new DoubleAnimation();        opacityAnimate.From = 1.0;        opacityAnimate.To = 0.0;        Storyboard.SetTarget(opacityAnimate, myShapes[i]);        Storyboard.SetTargetProperty(opacityAnimate,          new PropertyPath("Opacity"));        opacityAnimate.Duration = new Duration(TimeSpan.FromSeconds(mSecond));        opacityAnimate.RepeatBehavior = RepeatBehavior.Forever;          //將時間線添加到情節(jié)摘要        story.Children.Add(opacityAnimate);      }    }  }}

效果圖:

Silverlight,星星閃爍動畫

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 伊通| 麻江县| 池州市| 金昌市| 金山区| 建阳市| 高雄县| 嘉黎县| 定陶县| 宕昌县| 商水县| 于都县| 乐昌市| 唐海县| 大渡口区| 清原| 浮山县| 新民市| 沁源县| 克拉玛依市| 霸州市| 南开区| 丁青县| 巴马| 大庆市| 麻阳| 敖汉旗| 武穴市| 武强县| 东丰县| 巩义市| 筠连县| 广河县| 剑川县| 门源| 广饶县| 平遥县| 贵州省| 中阳县| 讷河市| 罗平县|