且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

silverlight版的图片轮换广告

更新时间:2022-08-20 13:26:42

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


xaml代码:
silverlight版的图片轮换广告silverlight版的图片轮换广告xaml
 1silverlight版的图片轮换广告<UserControl
 2silverlight版的图片轮换广告    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3silverlight版的图片轮换广告    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4silverlight版的图片轮换广告    x:Class="Ad.Page"
 5silverlight版的图片轮换广告    >
 6silverlight版的图片轮换广告    <UserControl.Resources>
 7silverlight版的图片轮换广告        <Storyboard x:Name="sb_Big">
 8silverlight版的图片轮换广告            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="imgBig" Storyboard.TargetProperty="(UIElement.Opacity)">
 9silverlight版的图片轮换广告                <EasingDoubleKeyFrame KeyTime="00:00:00" Value="0.1"/>
10silverlight版的图片轮换广告                <EasingDoubleKeyFrame KeyTime="00:00:01" Value="1"/>
11silverlight版的图片轮换广告            </DoubleAnimationUsingKeyFrames>
12silverlight版的图片轮换广告        </Storyboard>
13silverlight版的图片轮换广告    </UserControl.Resources>
14silverlight版的图片轮换广告    
15silverlight版的图片轮换广告    <Canvas Background="#efefef" Height="190" Width="270">
16silverlight版的图片轮换广告        <StackPanel Height="170" x:Name="pnl1" Width="270" Orientation="Horizontal" >
17silverlight版的图片轮换广告            <Image Height="150" Name="imgBig" Stretch="Fill" Width="200" Margin="10" Source="/Ad;component/img/001.jpg" Cursor="Hand" >
18silverlight版的图片轮换广告                <Image.Effect>
19silverlight版的图片轮换广告                    <DropShadowEffect/>
20silverlight版的图片轮换广告                </Image.Effect>
21silverlight版的图片轮换广告            </Image>
22silverlight版的图片轮换广告            <StackPanel Height="170" x:Name="pnl2" Width="40" Orientation="Vertical" Margin="0,0,10,0">
23silverlight版的图片轮换广告                <Image Height="10" Name="imgUp" Stretch="Fill" Width="22" Source="/Ad;component/img/up.png" MouseLeftButtonDown="up" Cursor="Hand"/>
24silverlight版的图片轮换广告                <Image Height="30" Name="img1" Stretch="Fill" Width="40" Source="/Ad;component/img/001.jpg" MouseLeftButtonDown="ImgClick" Cursor="Hand" />
25silverlight版的图片轮换广告                <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版的图片轮换广告
27silverlight版的图片轮换广告                </Image>
28silverlight版的图片轮换广告                <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版的图片轮换广告                <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版的图片轮换广告                <Image Height="10" Name="imgDown" Stretch="Fill" Width="22" Source="/Ad;component/img/down.png"  MouseLeftButtonDown="down" Cursor="Hand"/>
31silverlight版的图片轮换广告            </StackPanel>
32silverlight版的图片轮换广告        </StackPanel>
33silverlight版的图片轮换广告        <TextBlock Name="txtImg" Canvas.Top="170" Canvas.Left="10" Width="200" Text="就绪" HorizontalAlignment="Center" IsHitTestVisible="False" TextAlignment="Center"></TextBlock>
34silverlight版的图片轮换广告    </Canvas>
35silverlight版的图片轮换广告</UserControl>

Xaml.cs代码:
silverlight版的图片轮换广告silverlight版的图片轮换广告Xaml.Cs
  1silverlight版的图片轮换广告using System;
  2silverlight版的图片轮换广告using System.Collections.Generic;
  3silverlight版的图片轮换广告using System.Json;
  4silverlight版的图片轮换广告using System.Windows.Controls;
  5silverlight版的图片轮换广告using System.Windows.Input;
  6silverlight版的图片轮换广告using System.Windows.Media.Effects;
  7silverlight版的图片轮换广告using System.Windows.Media.Imaging;
  8silverlight版的图片轮换广告using System.Windows.Threading;
  9silverlight版的图片轮换广告
 10silverlight版的图片轮换广告
 11silverlight版的图片轮换广告namespace Ad
 12silverlight版的图片轮换广告silverlight版的图片轮换广告silverlight版的图片轮换广告{
 13silverlight版的图片轮换广告    public partial class Page : UserControl
 14silverlight版的图片轮换广告silverlight版的图片轮换广告    silverlight版的图片轮换广告{
 15silverlight版的图片轮换广告silverlight版的图片轮换广告        /**//// <summary>
 16silverlight版的图片轮换广告        /// Json数据源
 17silverlight版的图片轮换广告        /// </summary>

 18silverlight版的图片轮换广告        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版的图片轮换广告
 20silverlight版的图片轮换广告        int currentIndex = 0;//当前imgData的索引
 21silverlight版的图片轮换广告        int currentImgIndex = 0;//当前第几张小图为阴影区
 22silverlight版的图片轮换广告        int _Max = 4;//右侧显示几张小图
 23silverlight版的图片轮换广告
 24silverlight版的图片轮换广告        List<ImageItem> listSrc = new List<ImageItem>();
 25silverlight版的图片轮换广告
 26silverlight版的图片轮换广告        private DispatcherTimer _timer;
 27silverlight版的图片轮换广告
 28silverlight版的图片轮换广告        public Page()
 29silverlight版的图片轮换广告silverlight版的图片轮换广告        silverlight版的图片轮换广告{
 30silverlight版的图片轮换广告            // 需要初始化变量
 31silverlight版的图片轮换广告            InitializeComponent();
 32silverlight版的图片轮换广告
 33silverlight版的图片轮换广告silverlight版的图片轮换广告            将Json转化为强类型的List#region 将Json转化为强类型的List<>
 34silverlight版的图片轮换广告            JsonValue jv = JsonArray.Parse(imgData);
 35silverlight版的图片轮换广告            for (int i = 0; i < jv.Count; i++)
 36silverlight版的图片轮换广告silverlight版的图片轮换广告            silverlight版的图片轮换广告{
 37silverlight版的图片轮换广告silverlight版的图片轮换广告                listSrc.Add(new ImageItem() silverlight版的图片轮换广告{ src = jv[i]["src"].ToString().Replace("\\/""/").Replace("\""""), name = jv[i]["name"].ToString().Replace("\\/""/").Replace("\"""") });
 38silverlight版的图片轮换广告            }
            
 39silverlight版的图片轮换广告            #endregion

 40silverlight版的图片轮换广告
 41silverlight版的图片轮换广告            currentIndex = 0;
 42silverlight版的图片轮换广告            currentImgIndex = 0;
 43silverlight版的图片轮换广告            LoadImage();
 44silverlight版的图片轮换广告
 45silverlight版的图片轮换广告silverlight版的图片轮换广告            启动定时器#region 启动定时器
 46silverlight版的图片轮换广告            _timer = new DispatcherTimer();
 47silverlight版的图片轮换广告            _timer.Interval = new TimeSpan(0010);
 48silverlight版的图片轮换广告            _timer.Tick += new EventHandler(_timer_Tick);
 49silverlight版的图片轮换广告            _timer.Start();
 50silverlight版的图片轮换广告#endregion

 51silverlight版的图片轮换广告        }

 52silverlight版的图片轮换广告
 53silverlight版的图片轮换广告        void _timer_Tick(object sender, EventArgs e)
 54silverlight版的图片轮换广告silverlight版的图片轮换广告        silverlight版的图片轮换广告{
 55silverlight版的图片轮换广告            down(sender,null);
 56silverlight版的图片轮换广告        }

 57silverlight版的图片轮换广告
 58silverlight版的图片轮换广告        
 59silverlight版的图片轮换广告silverlight版的图片轮换广告        /**//// <summary>
 60silverlight版的图片轮换广告        /// 加载图片
 61silverlight版的图片轮换广告        /// </summary>       

 62silverlight版的图片轮换广告        private void LoadImage()
 63silverlight版的图片轮换广告silverlight版的图片轮换广告        silverlight版的图片轮换广告{            
 64silverlight版的图片轮换广告            int _start = currentIndex % listSrc.Count;         
 65silverlight版的图片轮换广告
 66silverlight版的图片轮换广告            for (int i = 0; i < _Max; i++)
 67silverlight版的图片轮换广告silverlight版的图片轮换广告            silverlight版的图片轮换广告{
 68silverlight版的图片轮换广告                if (_start >= listSrc.Count)
 69silverlight版的图片轮换广告silverlight版的图片轮换广告                silverlight版的图片轮换广告{
 70silverlight版的图片轮换广告                    _start = _start % listSrc.Count;
 71silverlight版的图片轮换广告                }

 72silverlight版的图片轮换广告                Image img = this.pnl2.FindName("img" + (i + 1).ToString()) as Image;
 73silverlight版的图片轮换广告                img.Source = new BitmapImage(new Uri(listSrc[_start].src, UriKind.Relative));
 74silverlight版的图片轮换广告
 75silverlight版的图片轮换广告                if (i == currentImgIndex)
 76silverlight版的图片轮换广告silverlight版的图片轮换广告                silverlight版的图片轮换广告{
 77silverlight版的图片轮换广告                    img.Effect = new DropShadowEffect();
 78silverlight版的图片轮换广告                    imgBig.Source = img.Source;
 79silverlight版的图片轮换广告                    sb_Big.Begin();
 80silverlight版的图片轮换广告                    txtImg.Text = listSrc[_start].name + " - yjmyzz.cnblogs.com";
 81silverlight版的图片轮换广告                }

 82silverlight版的图片轮换广告                else 
 83silverlight版的图片轮换广告silverlight版的图片轮换广告                silverlight版的图片轮换广告{
 84silverlight版的图片轮换广告                    img.Effect = null;
 85silverlight版的图片轮换广告                }

 86silverlight版的图片轮换广告                
 87silverlight版的图片轮换广告                _start++;
 88silverlight版的图片轮换广告            }
           
 89silverlight版的图片轮换广告        }

 90silverlight版的图片轮换广告
 91silverlight版的图片轮换广告silverlight版的图片轮换广告        /**//// <summary>
 92silverlight版的图片轮换广告        /// 点击向上翻时的逻辑处理 
 93silverlight版的图片轮换广告        /// </summary>
 94silverlight版的图片轮换广告        /// <param name="sender"></param>
 95silverlight版的图片轮换广告        /// <param name="e"></param>

 96silverlight版的图片轮换广告        private void up(object sender, MouseButtonEventArgs e)
 97silverlight版的图片轮换广告silverlight版的图片轮换广告        silverlight版的图片轮换广告{
 98silverlight版的图片轮换广告            currentIndex--;
 99silverlight版的图片轮换广告            if (currentIndex <= 0
100silverlight版的图片轮换广告silverlight版的图片轮换广告            silverlight版的图片轮换广告{
101silverlight版的图片轮换广告                currentIndex = listSrc.Count;
102silverlight版的图片轮换广告            }

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

105silverlight版的图片轮换广告
106silverlight版的图片轮换广告silverlight版的图片轮换广告        /**//// <summary>
107silverlight版的图片轮换广告        /// 点击向下按钮时的逻辑处理
108silverlight版的图片轮换广告        /// </summary>
109silverlight版的图片轮换广告        /// <param name="sender"></param>
110silverlight版的图片轮换广告        /// <param name="e"></param>

111silverlight版的图片轮换广告        private void down(object sender, MouseButtonEventArgs e)
112silverlight版的图片轮换广告silverlight版的图片轮换广告        silverlight版的图片轮换广告{
113silverlight版的图片轮换广告            currentIndex++;
114silverlight版的图片轮换广告            if (currentIndex >= listSrc.Count) 
115silverlight版的图片轮换广告silverlight版的图片轮换广告            silverlight版的图片轮换广告{
116silverlight版的图片轮换广告                currentIndex = 0;
117silverlight版的图片轮换广告            }

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

120silverlight版的图片轮换广告        
121silverlight版的图片轮换广告silverlight版的图片轮换广告        /**//// <summary>
122silverlight版的图片轮换广告        /// 单击右侧小图时,同时步更换大图
123silverlight版的图片轮换广告        /// </summary>
124silverlight版的图片轮换广告        /// <param name="sender"></param>
125silverlight版的图片轮换广告        /// <param name="e"></param>

126silverlight版的图片轮换广告        private void ImgClick(object sender, MouseButtonEventArgs e)
127silverlight版的图片轮换广告silverlight版的图片轮换广告        silverlight版的图片轮换广告{
128silverlight版的图片轮换广告            Image imgSmall = sender as Image;                 
129silverlight版的图片轮换广告
130silverlight版的图片轮换广告            imgBig.Source = imgSmall.Source;
131silverlight版的图片轮换广告            sb_Big.Begin();
132silverlight版的图片轮换广告
133silverlight版的图片轮换广告            for (int i = 1; i <= 4; i++)
134silverlight版的图片轮换广告silverlight版的图片轮换广告            silverlight版的图片轮换广告{
135silverlight版的图片轮换广告                Image img = this.pnl2.FindName("img" + i.ToString()) as Image;
136silverlight版的图片轮换广告                if (img == imgSmall)
137silverlight版的图片轮换广告silverlight版的图片轮换广告                silverlight版的图片轮换广告{
138silverlight版的图片轮换广告                    img.Effect = new DropShadowEffect();
139silverlight版的图片轮换广告                    currentImgIndex = i-1;//重新保存新的小图阴影索引
140silverlight版的图片轮换广告                }

141silverlight版的图片轮换广告                else
142silverlight版的图片轮换广告silverlight版的图片轮换广告                silverlight版的图片轮换广告{
143silverlight版的图片轮换广告                    img.Effect = null;
144silverlight版的图片轮换广告                }

145silverlight版的图片轮换广告            }

146silverlight版的图片轮换广告            
147silverlight版的图片轮换广告            //确定新的currentIndex
148silverlight版的图片轮换广告            for (int i = 0; i < listSrc.Count; i++)
149silverlight版的图片轮换广告silverlight版的图片轮换广告            silverlight版的图片轮换广告{
150silverlight版的图片轮换广告                if ((imgSmall.Source as BitmapImage).UriSource == new Uri(listSrc[i].src, UriKind.Relative))
151silverlight版的图片轮换广告silverlight版的图片轮换广告                silverlight版的图片轮换广告{
152silverlight版的图片轮换广告                    currentIndex = i;
153silverlight版的图片轮换广告                    break;
154silverlight版的图片轮换广告                }

155silverlight版的图片轮换广告            }

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

158silverlight版的图片轮换广告
159silverlight版的图片轮换广告silverlight版的图片轮换广告        /**//// <summary>
160silverlight版的图片轮换广告        /// 自定义类
161silverlight版的图片轮换广告        /// </summary>

162silverlight版的图片轮换广告        public class ImageItem
163silverlight版的图片轮换广告silverlight版的图片轮换广告        silverlight版的图片轮换广告{
164silverlight版的图片轮换广告silverlight版的图片轮换广告            public string src silverlight版的图片轮换广告setget; }
165silverlight版的图片轮换广告silverlight版的图片轮换广告            public string name silverlight版的图片轮换广告setget; }
166silverlight版的图片轮换广告        }

167silverlight版的图片轮换广告
168silverlight版的图片轮换广告        private void imgDown_MouseEnter(object sender, MouseEventArgs e)
169silverlight版的图片轮换广告silverlight版的图片轮换广告        silverlight版的图片轮换广告{
170silverlight版的图片轮换广告            this._timer.Stop();
171silverlight版的图片轮换广告        }

172silverlight版的图片轮换广告
173silverlight版的图片轮换广告        private void imgDown_MouseLeave(object sender, MouseEventArgs e)
174silverlight版的图片轮换广告silverlight版的图片轮换广告        silverlight版的图片轮换广告{
175silverlight版的图片轮换广告            this._timer.Start();
176silverlight版的图片轮换广告        }

177silverlight版的图片轮换广告
178silverlight版的图片轮换广告
179silverlight版的图片轮换广告    }

180silverlight版的图片轮换广告}

源代码下载:http://files.cnblogs.com/yjmyzz/ImageAd_src.rar