云上快速入门,热门云上应用快速查找
丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
畅聊无限,分享你的技术见解
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的Chrome浏览器插件
热门
首先看效果图,然后给出代码。
每10秒自动切换图片,点击右侧图片列表,左侧自动显示该图片。
<UserControl x:Class="gqfc.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" > <UserControl.Resources> <Storyboard x:Name="sb_Big"> <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="imgBig" Storyboard.TargetProperty="(UIElement.Opacity)"> <EasingDoubleKeyFrame KeyTime="00:00:00" Value="0.1"/> <EasingDoubleKeyFrame KeyTime="00:00:01" Value="1"/> </DoubleAnimationUsingKeyFrames> </Storyboard> </UserControl.Resources> <Grid x:Name="LayoutRoot" Background="White" Margin="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="0.85*"></ColumnDefinition> <ColumnDefinition Width="0.15*"></ColumnDefinition> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="0.05*"></RowDefinition> <RowDefinition Height="0.95*"></RowDefinition> </Grid.RowDefinitions> <Grid Grid.Column="0" Grid.Row="1"> <Image Name="imgBig" Margin="5,5,1,10" Source="/gqfc;component/Photos/fc1.jpg" Cursor="Hand" Stretch="Fill" > <Image.Effect> <DropShadowEffect/> </Image.Effect> </Image> </Grid> <Grid Grid.Column="1" Grid.RowSpan="2" Width="100" x:Name="pnl2"> <Grid.RowDefinitions> <RowDefinition Height="0.05*"></RowDefinition> <RowDefinition Height="0.15*"></RowDefinition> <RowDefinition Height="0.15*"></RowDefinition> <RowDefinition Height="0.15*"></RowDefinition> <RowDefinition Height="0.15*"></RowDefinition> <RowDefinition Height="0.15*"></RowDefinition> <RowDefinition Height="0.15*"></RowDefinition> <RowDefinition Height="0.05*"></RowDefinition> </Grid.RowDefinitions> <Grid Grid.Row="0"> <Image x:Name="imgUp" Source="/gqfc;component/Photos/up.png" MouseLeftButtonDown="up" Cursor="Hand" ToolTipService.ToolTip="上一个图片"/> </Grid> <Grid Margin="0,10,0,0" Grid.Row="1" > <Image x:Name="img1" Source="/gqfc;component/Photos/fc2.jpg" MouseLeftButtonDown="ImgClick" Cursor="Hand" Stretch="Fill" ToolTipService.ToolTip="灌 区 风 采 " /> </Grid> <Grid Margin="0,10,0,0" Grid.Row="2"> <Image x:Name="img2" Source="/gqfc;component/Photos/fc3.jpg" MouseLeftButtonDown="ImgClick" Cursor="Hand" Stretch="Fill" ToolTipService.ToolTip="灌 区 风 采 "/> </Grid> <Grid Margin="0,10,0,0" Grid.Row="3"> <Image x:Name="img3" Source="/gqfc;component/Photos/fc4.jpg" MouseLeftButtonDown="ImgClick" Cursor="Hand" Stretch="Fill" ToolTipService.ToolTip="灌 区 风 采 "/> </Grid> <Grid Margin="0,10,0,0" Grid.Row="4"> <Image x:Name="img4" Source="/gqfc;component/Photos/fc5.jpg" MouseLeftButtonDown="ImgClick" Cursor="Hand" Stretch="Fill" ToolTipService.ToolTip="灌 区 风 采 "/> </Grid> <Grid Margin="0,10,0,0" Grid.Row="5"> <Image x:Name="img5" Source="/gqfc;component/Photos/fc6.jpg" MouseLeftButtonDown="ImgClick" Cursor="Hand" Stretch="Fill" ToolTipService.ToolTip="灌 区 风 采 "/> </Grid> <Grid Margin="0,10,0,0" Grid.Row="6"> <Image x:Name="img6" Source="/gqfc;component/Photos/fc7.jpg" MouseLeftButtonDown="ImgClick" Cursor="Hand" Stretch="Fill" ToolTipService.ToolTip="灌 区 风 采 "/> </Grid> <Grid Grid.Row="7"> <Image x:Name="imgDown" Source="/gqfc;component/Photos/down.png" MouseLeftButtonDown="down" Cursor="Hand" ToolTipService.ToolTip="下一个图片"/> </Grid> </Grid> <Border Grid.Column="0" HorizontalAlignment="Center" Grid.Row="0" VerticalAlignment="Center" BorderBrush="#FF54DC18" BorderThickness="1" CornerRadius="5" ToolTipService.ToolTip="灌 区 风 采 " Cursor="Hand" > <Border.Effect> <DropShadowEffect/> </Border.Effect> <Border.Background> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="Black" Offset="0"/> <GradientStop Color="#FFDAB4B4"/> <GradientStop Color="#FFDABDB4" Offset="0.848"/> <GradientStop Color="#FFB4DAC1" Offset="0.525"/> <GradientStop Color="#FFC9C4B9" Offset="0.362"/> </LinearGradientBrush> </Border.Background> <TextBlock x:Name="txtImg" Text="灌 区 风 采 图 片" IsHitTestVisible="False" TextAlignment="Center" FontSize="16" Foreground="#FFAB4444" FontWeight="Bold" Height="23" Width="120"/> </Border> </Grid> </UserControl>
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; using System.Json; using System.Windows.Media.Effects; using System.Windows.Media.Imaging; using System.Windows.Threading; namespace gqfc { public partial class MainPage : UserControl { /// <summary> /// Json数据源 /// </summary> string imgData = "[{src:'/gqfc;component/Photos/fc1.jpg',name:'灌区风采图片1'},{src:'/gqfc;component/Photos/fc2.jpg',name:'灌区风采图片2'},{src:'/gqfc;component/Photos/fc3.jpg',name:'灌区风采图片3'},{src:'/gqfc;component/Photos/fc4.jpg',name:'灌区风采图片4'},{src:'/gqfc;component/Photos/fc5.jpg',name:'灌区风采图片5'},{src:'/gqfc;component/Photos/fc6.jpg',name:'灌区风采图片6'},{src:'/gqfc;component/Photos/fc7.jpg',name:'灌区风采图片7'},{src:'/gqfc;component/Photos/fc8.jpg',name:'灌区风采图片8'},{src:'/gqfc;component/Photos/fc9.jpg',name:'灌区风采图片9'},{src:'/gqfc;component/Photos/fc10.jpg',name:'灌区风采图片10'},{src:'/gqfc;component/Photos/fc11.jpg',name:'灌区风采图片11'},{src:'/gqfc;component/Photos/fc12.jpg',name:'灌区风采图片12'},{src:'/gqfc;component/Photos/fc13.jpg',name:'灌区风采图片13'}]"; int currentIndex = 0;//当前imgData的索引 int currentImgIndex = 0;//当前第几张小图为阴影区 int _Max = 6;//右侧显示几张小图 List<ImageItem> listSrc = new List<ImageItem>(); private DispatcherTimer _timer; public MainPage() { InitializeComponent(); #region 将Json转化为强类型的List<> JsonValue jv = JsonArray.Parse(imgData); for (int i = 0; i < jv.Count; i++) { listSrc.Add(new ImageItem() { src = jv[i]["src"].ToString().Replace("///", "/").Replace("/"", ""), name = jv[i]["name"].ToString().Replace("///", "/").Replace("/"", "") }); } #endregion currentIndex = 0; currentImgIndex = 0; LoadImage(); #region 启动定时器 _timer = new DispatcherTimer(); _timer.Interval = new TimeSpan(0, 0, 10); _timer.Tick += new EventHandler(_timer_Tick); _timer.Start(); #endregion } void _timer_Tick(object sender, EventArgs e) { down(sender, null); } /// <summary> /// 加载图片 /// </summary> private void LoadImage() { int _start = currentIndex % listSrc.Count; for (int i = 0; i < _Max; i++) { if (_start >= listSrc.Count) { _start = _start % listSrc.Count; } Image img = this.pnl2.FindName("img" + (i + 1).ToString()) as Image; img.Source = new BitmapImage(new Uri(listSrc[_start].src, UriKind.Relative)); if (i == currentImgIndex) { img.Effect = new DropShadowEffect(); imgBig.Source = img.Source; sb_Big.Begin(); txtImg.Text = listSrc[_start].name; } else { img.Effect = null; } _start++; } } /// <summary> /// 点击向上翻时的逻辑处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void up(object sender, MouseButtonEventArgs e) { currentIndex--; if (currentIndex <= 0) { currentIndex = listSrc.Count; } LoadImage(); } /// <summary> /// 点击向下按钮时的逻辑处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void down(object sender, MouseButtonEventArgs e) { currentIndex++; if (currentIndex >= listSrc.Count) { currentIndex = 0; } LoadImage(); } /// <summary> /// 单击右侧小图时,同时步更换大图 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ImgClick(object sender, MouseButtonEventArgs e) { Image imgSmall = sender as Image; imgBig.Source = imgSmall.Source; sb_Big.Begin(); for (int i = 1; i <= 6; i++) { Image img = this.pnl2.FindName("img" + i.ToString()) as Image; if (img == imgSmall) { img.Effect = new DropShadowEffect(); currentImgIndex = i-1;//重新保存新的小图阴影索引 } else { img.Effect = null; } } //确定新的currentIndex for (int i = 0; i < listSrc.Count; i++) { if ((imgSmall.Source as BitmapImage).UriSource == new Uri(listSrc[i].src, UriKind.Relative)) { currentIndex = i; break; } } txtImg.Text = listSrc[currentIndex].name ; } /// <summary> /// 自定义类 /// </summary> public class ImageItem { public string src { set; get; } public string name { set; get; } } private void imgDown_MouseEnter(object sender, MouseEventArgs e) { this._timer.Stop(); } private void imgDown_MouseLeave(object sender, MouseEventArgs e) { this._timer.Start(); } } }