今天有个临时需求,做图片轮播,以前做了一个,找不到了。
想了个简单的方法临时拿着用,这里先记着有空再来改。
上代码-----》
using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
using System.Windows.Threading;
namespace wpf图片轮播
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(0.1);
timer.Tick += timer1_Tick;
//timer.Start();
}
/// <summary>
/// 鼠标点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button_Click(object sender, RoutedEventArgs e)
{
list.Children.Clear();
string[] s = SearchFolder(textBox.Text);
BitmapImage_Source = new BitmapImage[s.Length];
int i = 0;
foreach (string item in s)
{
BitmapImage_Source[i] = new BitmapImage(new Uri(@"" + item, UriKind.Absolute)); ;
i++;
TextBox cc = new TextBox();
cc.Text = item;
list.Children.Add(cc);
}
timer.Start();
}
private DispatcherTimer timer;
/// <summary>
/// 测试timer用
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void timer_Tick(object sender, EventArgs e)
{
this.Title = string.Concat("TimerWindow ", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
}
/// <summary>
/// 改变图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer1_Tick(object sender, EventArgs e)
{
//(你的定时处理)
this.Dispatcher.Invoke(new Action(() =>
{
image.Source = BitmapImage_Source[pic_now];
pic_now++;
if (pic_now > BitmapImage_Source.Length - 1) { pic_now = 0; }
}));
}
BitmapImage[] BitmapImage_Source;
int pic_now = 0;
/// <summary>
/// 搜出路径下 文件路径
/// </summary>
/// <param name="dir"></param>
/// <returns></returns>
public static string[] SearchFolder(string dir)
{
string[] images = null;
if (System.IO.Directory.Exists(dir)) //如果存在这个文件夹删除之
{
int image_sum = 0;
foreach (string files in System.IO.Directory.GetFiles(dir))
{
if (files.Contains(".JPG") || files.Contains(".jpg") || files.Contains(".JPEG") || files.Contains(".jpeg") || files.Contains(".bmp") || files.Contains(".BMP") || files.Contains(".GIF") || files.Contains(".gif") || files.Contains(".PNG") || files.Contains(".png"))
{
image_sum++;
}
}
images = new string[image_sum];
image_sum = 0;
foreach (string files in System.IO.Directory.GetFiles(dir))
{
if (files.Contains(".JPG") || files.Contains(".jpg") || files.Contains(".JPEG") || files.Contains(".jpeg") || files.Contains(".bmp") || files.Contains(".BMP") || files.Contains(".GIF") || files.Contains(".gif") || files.Contains(".PNG") || files.Contains(".png"))
{
images[image_sum] = files;
image_sum++;
}
}
}
return images;
}
}
}
xaml 部分
<Window x:Class="wpf图片轮播.MainWindow"
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"
xmlns:local="clr-namespace:wpf图片轮播"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="53*"/>
<RowDefinition Height="11*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="160*"/>
<ColumnDefinition Width="357*"/>
</Grid.ColumnDefinitions>
<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="245,15,0,0" VerticalAlignment="Top" Width="75" Click="button_Click" Grid.Column="1" Grid.Row="1"/>
<StackPanel x:Name="list" HorizontalAlignment="Left" Height="320" VerticalAlignment="Top" Width="160" Grid.RowSpan="2"/>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="42,15,0,0" TextWrapping="Wrap" Text="D:\工作数据\SuperPay" VerticalAlignment="Top" Width="120" Grid.Column="1" Grid.Row="1"/>
<Image x:Name="image" Margin="0" Grid.Column="1"/>
</Grid>
</Window>