今天下午模仿公司的Flash版图片广告做了一个silverlight版的图片轮换广告,10秒轮换一次

silverlight版的图片轮换广告_silverlight


xaml代码:

silverlight版的图片轮换广告_silverlight_02silverlight版的图片轮换广告_json_03xaml

 1silverlight版的图片轮换广告_json_04<UserControl

 2silverlight版的图片轮换广告_json_04    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

 3silverlight版的图片轮换广告_json_04    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

 4silverlight版的图片轮换广告_json_04    x:Class="Ad.Page"

 5silverlight版的图片轮换广告_json_04    >

 6silverlight版的图片轮换广告_json_04    <UserControl.Resources>

 7silverlight版的图片轮换广告_json_04        <Storyboard x:Name="sb_Big">

 8silverlight版的图片轮换广告_json_04            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="imgBig" Storyboard.TargetProperty="(UIElement.Opacity)">

 9silverlight版的图片轮换广告_json_04                <EasingDoubleKeyFrame KeyTime="00:00:00" Value="0.1"/>

10silverlight版的图片轮换广告_json_04                <EasingDoubleKeyFrame KeyTime="00:00:01" Value="1"/>

11silverlight版的图片轮换广告_json_04            </DoubleAnimationUsingKeyFrames>

12silverlight版的图片轮换广告_json_04        </Storyboard>

13silverlight版的图片轮换广告_json_04    </UserControl.Resources>

14silverlight版的图片轮换广告_json_04    

15silverlight版的图片轮换广告_json_04    <Canvas Background="#efefef" Height="190" Width="270">

16silverlight版的图片轮换广告_json_04        <StackPanel Height="170" x:Name="pnl1" Width="270" Orientation="Horizontal" >

17silverlight版的图片轮换广告_json_04            <Image Height="150" Name="imgBig" Stretch="Fill" Width="200" Margin="10" Source="/Ad;component/img/001.jpg" Cursor="Hand" >

18silverlight版的图片轮换广告_json_04                <Image.Effect>

19silverlight版的图片轮换广告_json_04                    <DropShadowEffect/>

20silverlight版的图片轮换广告_json_04                </Image.Effect>

21silverlight版的图片轮换广告_json_04            </Image>

22silverlight版的图片轮换广告_json_04            <StackPanel Height="170" x:Name="pnl2" Width="40" Orientation="Vertical" Margin="0,0,10,0">

23silverlight版的图片轮换广告_json_04                <Image Height="10" Name="imgUp" Stretch="Fill" Width="22" Source="/Ad;component/img/up.png" MouseLeftButtonDown="up" Cursor="Hand"/>

24silverlight版的图片轮换广告_json_04                <Image Height="30" Name="img1" Stretch="Fill" Width="40" Source="/Ad;component/img/001.jpg" MouseLeftButtonDown="ImgClick" Cursor="Hand" />

25silverlight版的图片轮换广告_json_04                <Image Height="30" Name="img2" Stretch="Fill" Width="40" Margin="0,10,0,0" Source="/Ad;component/img/002.jpg" MouseLeftButtonDown="ImgClick" Cursor="Hand">

26silverlight版的图片轮换广告_json_04

27silverlight版的图片轮换广告_json_04                </Image>

28silverlight版的图片轮换广告_json_04                <Image Height="30" Name="img3" Stretch="Fill" Width="40" Margin="0,10,0,0" Source="/Ad;component/img/003.jpg" MouseLeftButtonDown="ImgClick" Cursor="Hand"/>

29silverlight版的图片轮换广告_json_04                <Image Height="30" Name="img4" Stretch="Fill" Width="40" Margin="0,10,0,0" Source="/Ad;component/img/004.jpg" MouseLeftButtonDown="ImgClick" Cursor="Hand"/>

30silverlight版的图片轮换广告_json_04                <Image Height="10" Name="imgDown" Stretch="Fill" Width="22" Source="/Ad;component/img/down.png"  MouseLeftButtonDown="down" Cursor="Hand"/>

31silverlight版的图片轮换广告_json_04            </StackPanel>

32silverlight版的图片轮换广告_json_04        </StackPanel>

33silverlight版的图片轮换广告_json_04        <TextBlock Name="txtImg" Canvas.Top="170" Canvas.Left="10" Width="200" Text="就绪" HorizontalAlignment="Center" IsHitTestVisible="False" TextAlignment="Center"></TextBlock>

34silverlight版的图片轮换广告_json_04    </Canvas>

35silverlight版的图片轮换广告_json_04</UserControl>


Xaml.cs代码:

silverlight版的图片轮换广告_silverlight_02silverlight版的图片轮换广告_json_03Xaml.Cs

  1silverlight版的图片轮换广告_json_04using System;

  2silverlight版的图片轮换广告_json_04using System.Collections.Generic;

  3silverlight版的图片轮换广告_json_04using System.Json;

  4silverlight版的图片轮换广告_json_04using System.Windows.Controls;

  5silverlight版的图片轮换广告_json_04using System.Windows.Input;

  6silverlight版的图片轮换广告_json_04using System.Windows.Media.Effects;

  7silverlight版的图片轮换广告_json_04using System.Windows.Media.Imaging;

  8silverlight版的图片轮换广告_json_04using System.Windows.Threading;

  9silverlight版的图片轮换广告_json_04

 10silverlight版的图片轮换广告_json_04

 11silverlight版的图片轮换广告_json_04namespace Ad

 12silverlight版的图片轮换广告_json_03silverlight版的图片轮换广告_silverlight_02silverlight版的图片轮换广告_json_54{

 13silverlight版的图片轮换广告_microsoft_55    public partial class Page : UserControl

 14silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57    silverlight版的图片轮换广告_json_54{

 15silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        /**//// <summary>

 16silverlight版的图片轮换广告_microsoft_55        /// Json数据源

 17silverlight版的图片轮换广告_i++_62        /// </summary>

 18silverlight版的图片轮换广告_microsoft_55        string imgData = "[{src:'/Ad;component/img/001.jpg',name:'图片1'},{src:'/Ad;component/img/002.jpg',name:'图片2'},{src:'/Ad;component/img/003.jpg',name:'图片3'},{src:'/Ad;component/img/004.jpg',name:'图片4'},{src:'/Ad;component/img/005.jpg',name:'图片5'},{src:'/Ad;component/img/006.jpg',name:'图片6'},{src:'/Ad;component/img/007.jpg',name:'图片7'}]";

 19silverlight版的图片轮换广告_microsoft_55

 20silverlight版的图片轮换广告_microsoft_55        int currentIndex = 0;//当前imgData的索引

 21silverlight版的图片轮换广告_microsoft_55        int currentImgIndex = 0;//当前第几张小图为阴影区

 22silverlight版的图片轮换广告_microsoft_55        int _Max = 4;//右侧显示几张小图

 23silverlight版的图片轮换广告_microsoft_55

 24silverlight版的图片轮换广告_microsoft_55        List<ImageItem> listSrc = new List<ImageItem>();

 25silverlight版的图片轮换广告_microsoft_55

 26silverlight版的图片轮换广告_microsoft_55        private DispatcherTimer _timer;

 27silverlight版的图片轮换广告_microsoft_55

 28silverlight版的图片轮换广告_microsoft_55        public Page()

 29silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        silverlight版的图片轮换广告_json_54{

 30silverlight版的图片轮换广告_microsoft_55            // 需要初始化变量

 31silverlight版的图片轮换广告_microsoft_55            InitializeComponent();

 32silverlight版的图片轮换广告_microsoft_55

 33silverlight版的图片轮换广告_json_57silverlight版的图片轮换广告_silverlight_56            将Json转化为强类型的List#region 将Json转化为强类型的List<>

 34silverlight版的图片轮换广告_microsoft_55            JsonValue jv = JsonArray.Parse(imgData);

 35silverlight版的图片轮换广告_microsoft_55            for (int i = 0; i < jv.Count; i++)

 36silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57            silverlight版的图片轮换广告_json_54{

 37silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57                listSrc.Add(new ImageItem() silverlight版的图片轮换广告_json_54{ src = jv[i]["src"].ToString().Replace("\\/", "/").Replace("\"", ""), name = jv[i]["name"].ToString().Replace("\\/", "/").Replace("\"", "") });

 38silverlight版的图片轮换广告_i++_62            }            

 39silverlight版的图片轮换广告_i++_62            #endregion

 40silverlight版的图片轮换广告_microsoft_55

 41silverlight版的图片轮换广告_microsoft_55            currentIndex = 0;

 42silverlight版的图片轮换广告_microsoft_55            currentImgIndex = 0;

 43silverlight版的图片轮换广告_microsoft_55            LoadImage();

 44silverlight版的图片轮换广告_microsoft_55

 45silverlight版的图片轮换广告_json_57silverlight版的图片轮换广告_silverlight_56            启动定时器#region 启动定时器

 46silverlight版的图片轮换广告_microsoft_55            _timer = new DispatcherTimer();

 47silverlight版的图片轮换广告_microsoft_55            _timer.Interval = new TimeSpan(0, 0, 10);

 48silverlight版的图片轮换广告_microsoft_55            _timer.Tick += new EventHandler(_timer_Tick);

 49silverlight版的图片轮换广告_microsoft_55            _timer.Start();

 50silverlight版的图片轮换广告_i++_62#endregion

 51silverlight版的图片轮换广告_i++_62        }

 52silverlight版的图片轮换广告_microsoft_55

 53silverlight版的图片轮换广告_microsoft_55        void _timer_Tick(object sender, EventArgs e)

 54silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        silverlight版的图片轮换广告_json_54{

 55silverlight版的图片轮换广告_microsoft_55            down(sender,null);

 56silverlight版的图片轮换广告_i++_62        }

 57silverlight版的图片轮换广告_microsoft_55

 58silverlight版的图片轮换广告_microsoft_55        

 59silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        /**//// <summary>

 60silverlight版的图片轮换广告_microsoft_55        /// 加载图片

 61silverlight版的图片轮换广告_i++_62        /// </summary>       

 62silverlight版的图片轮换广告_microsoft_55        private void LoadImage()

 63silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        silverlight版的图片轮换广告_json_54{            

 64silverlight版的图片轮换广告_microsoft_55            int _start = currentIndex % listSrc.Count;         

 65silverlight版的图片轮换广告_microsoft_55

 66silverlight版的图片轮换广告_microsoft_55            for (int i = 0; i < _Max; i++)

 67silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57            silverlight版的图片轮换广告_json_54{

 68silverlight版的图片轮换广告_microsoft_55                if (_start >= listSrc.Count)

 69silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57                silverlight版的图片轮换广告_json_54{

 70silverlight版的图片轮换广告_microsoft_55                    _start = _start % listSrc.Count;

 71silverlight版的图片轮换广告_i++_62                }

 72silverlight版的图片轮换广告_microsoft_55                Image img = this.pnl2.FindName("img" + (i + 1).ToString()) as Image;

 73silverlight版的图片轮换广告_microsoft_55                img.Source = new BitmapImage(new Uri(listSrc[_start].src, UriKind.Relative));

 74silverlight版的图片轮换广告_microsoft_55

 75silverlight版的图片轮换广告_microsoft_55                if (i == currentImgIndex)

 76silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57                silverlight版的图片轮换广告_json_54{

 77silverlight版的图片轮换广告_microsoft_55                    img.Effect = new DropShadowEffect();

 78silverlight版的图片轮换广告_microsoft_55                    imgBig.Source = img.Source;

 79silverlight版的图片轮换广告_microsoft_55                    sb_Big.Begin();

 80silverlight版的图片轮换广告_microsoft_55                    txtImg.Text = listSrc[_start].name + " - yjmyzz.cnblogs.com";

 81silverlight版的图片轮换广告_i++_62                }

 82silverlight版的图片轮换广告_microsoft_55                else 

 83silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57                silverlight版的图片轮换广告_json_54{

 84silverlight版的图片轮换广告_microsoft_55                    img.Effect = null;

 85silverlight版的图片轮换广告_i++_62                }

 86silverlight版的图片轮换广告_microsoft_55                

 87silverlight版的图片轮换广告_microsoft_55                _start++;

 88silverlight版的图片轮换广告_i++_62            }           

 89silverlight版的图片轮换广告_i++_62        }

 90silverlight版的图片轮换广告_microsoft_55

 91silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        /**//// <summary>

 92silverlight版的图片轮换广告_microsoft_55        /// 点击向上翻时的逻辑处理 

 93silverlight版的图片轮换广告_microsoft_55        /// </summary>

 94silverlight版的图片轮换广告_microsoft_55        /// <param name="sender"></param>

 95silverlight版的图片轮换广告_i++_62        /// <param name="e"></param>

 96silverlight版的图片轮换广告_microsoft_55        private void up(object sender, MouseButtonEventArgs e)

 97silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        silverlight版的图片轮换广告_json_54{

 98silverlight版的图片轮换广告_microsoft_55            currentIndex--;

 99silverlight版的图片轮换广告_microsoft_55            if (currentIndex <= 0) 

100silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57            silverlight版的图片轮换广告_json_54{

101silverlight版的图片轮换广告_microsoft_55                currentIndex = listSrc.Count;

102silverlight版的图片轮换广告_i++_62            }

103silverlight版的图片轮换广告_microsoft_55            LoadImage();

104silverlight版的图片轮换广告_i++_62        }

105silverlight版的图片轮换广告_microsoft_55

106silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        /**//// <summary>

107silverlight版的图片轮换广告_microsoft_55        /// 点击向下按钮时的逻辑处理

108silverlight版的图片轮换广告_microsoft_55        /// </summary>

109silverlight版的图片轮换广告_microsoft_55        /// <param name="sender"></param>

110silverlight版的图片轮换广告_i++_62        /// <param name="e"></param>

111silverlight版的图片轮换广告_microsoft_55        private void down(object sender, MouseButtonEventArgs e)

112silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        silverlight版的图片轮换广告_json_54{

113silverlight版的图片轮换广告_microsoft_55            currentIndex++;

114silverlight版的图片轮换广告_microsoft_55            if (currentIndex >= listSrc.Count) 

115silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57            silverlight版的图片轮换广告_json_54{

116silverlight版的图片轮换广告_microsoft_55                currentIndex = 0;

117silverlight版的图片轮换广告_i++_62            }

118silverlight版的图片轮换广告_microsoft_55            LoadImage();

119silverlight版的图片轮换广告_i++_62        }

120silverlight版的图片轮换广告_microsoft_55        

121silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        /**//// <summary>

122silverlight版的图片轮换广告_microsoft_55        /// 单击右侧小图时,同时步更换大图

123silverlight版的图片轮换广告_microsoft_55        /// </summary>

124silverlight版的图片轮换广告_microsoft_55        /// <param name="sender"></param>

125silverlight版的图片轮换广告_i++_62        /// <param name="e"></param>

126silverlight版的图片轮换广告_microsoft_55        private void ImgClick(object sender, MouseButtonEventArgs e)

127silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        silverlight版的图片轮换广告_json_54{

128silverlight版的图片轮换广告_microsoft_55            Image imgSmall = sender as Image;                 

129silverlight版的图片轮换广告_microsoft_55

130silverlight版的图片轮换广告_microsoft_55            imgBig.Source = imgSmall.Source;

131silverlight版的图片轮换广告_microsoft_55            sb_Big.Begin();

132silverlight版的图片轮换广告_microsoft_55

133silverlight版的图片轮换广告_microsoft_55            for (int i = 1; i <= 4; i++)

134silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57            silverlight版的图片轮换广告_json_54{

135silverlight版的图片轮换广告_microsoft_55                Image img = this.pnl2.FindName("img" + i.ToString()) as Image;

136silverlight版的图片轮换广告_microsoft_55                if (img == imgSmall)

137silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57                silverlight版的图片轮换广告_json_54{

138silverlight版的图片轮换广告_microsoft_55                    img.Effect = new DropShadowEffect();

139silverlight版的图片轮换广告_microsoft_55                    currentImgIndex = i-1;//重新保存新的小图阴影索引

140silverlight版的图片轮换广告_i++_62                }

141silverlight版的图片轮换广告_microsoft_55                else

142silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57                silverlight版的图片轮换广告_json_54{

143silverlight版的图片轮换广告_microsoft_55                    img.Effect = null;

144silverlight版的图片轮换广告_i++_62                }

145silverlight版的图片轮换广告_i++_62            }

146silverlight版的图片轮换广告_microsoft_55            

147silverlight版的图片轮换广告_microsoft_55            //确定新的currentIndex

148silverlight版的图片轮换广告_microsoft_55            for (int i = 0; i < listSrc.Count; i++)

149silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57            silverlight版的图片轮换广告_json_54{

150silverlight版的图片轮换广告_microsoft_55                if ((imgSmall.Source as BitmapImage).UriSource == new Uri(listSrc[i].src, UriKind.Relative))

151silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57                silverlight版的图片轮换广告_json_54{

152silverlight版的图片轮换广告_microsoft_55                    currentIndex = i;

153silverlight版的图片轮换广告_microsoft_55                    break;

154silverlight版的图片轮换广告_i++_62                }

155silverlight版的图片轮换广告_i++_62            }

156silverlight版的图片轮换广告_microsoft_55            txtImg.Text = listSrc[currentIndex].name + " - yjmyzz.cnblogs.com"; ;

157silverlight版的图片轮换广告_i++_62        }

158silverlight版的图片轮换广告_microsoft_55

159silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        /**//// <summary>

160silverlight版的图片轮换广告_microsoft_55        /// 自定义类

161silverlight版的图片轮换广告_i++_62        /// </summary>

162silverlight版的图片轮换广告_microsoft_55        public class ImageItem

163silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        silverlight版的图片轮换广告_json_54{

164silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57            public string src silverlight版的图片轮换广告_json_54{ set; get; }

165silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57            public string name silverlight版的图片轮换广告_json_54{ set; get; }

166silverlight版的图片轮换广告_i++_62        }

167silverlight版的图片轮换广告_microsoft_55

168silverlight版的图片轮换广告_microsoft_55        private void imgDown_MouseEnter(object sender, MouseEventArgs e)

169silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        silverlight版的图片轮换广告_json_54{

170silverlight版的图片轮换广告_microsoft_55            this._timer.Stop();

171silverlight版的图片轮换广告_i++_62        }

172silverlight版的图片轮换广告_microsoft_55

173silverlight版的图片轮换广告_microsoft_55        private void imgDown_MouseLeave(object sender, MouseEventArgs e)

174silverlight版的图片轮换广告_silverlight_56silverlight版的图片轮换广告_json_57        silverlight版的图片轮换广告_json_54{

175silverlight版的图片轮换广告_microsoft_55            this._timer.Start();

176silverlight版的图片轮换广告_i++_62        }

177silverlight版的图片轮换广告_microsoft_55

178silverlight版的图片轮换广告_microsoft_55

179silverlight版的图片轮换广告_i++_62    }

180silverlight版的图片轮换广告_silverlight_280}

 

作者:菩提树下的杨过