废话不说直接上代码:
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
ObservableCollection<BitmapImage> bmList;
int index = 0; //记录索引
BackgroundWorker bw = new BackgroundWorker();
public MainWindow()
{
InitializeComponent();
InitList();
CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
button1.Click += new RoutedEventHandler(button1_Click);
button2.Click += new RoutedEventHandler(button2_Click);
button3.Click += new RoutedEventHandler(button3_Click);
}
void button2_Click(object sender, RoutedEventArgs e)
{
if (index < bmList.Count - 1)
index++;
else
index = 0;
}
void button1_Click(object sender, RoutedEventArgs e)
{
if (index > 0)
index--;
else
index = bmList.Count - 1;
}
bool flag = true;
void button3_Click(object sender, RoutedEventArgs e)
{
if (flag == true)
{
bw.RunWorkerAsync();
flag = false;
(sender as Button).Content = "End";
}
else
{
flag = true;
(sender as Button).Content = "Start";
}
}
void bw_DoWork(object sender, DoWorkEventArgs e)
{
while (!e.Cancel)
{
button2_Click(sender, new RoutedEventArgs());
System.Threading.Thread.Sleep(2000); //停2秒
e.Cancel = flag;
}
}
List<string> list = new List<string>();
public void InitList()
{
list = System.IO.Directory.GetFiles("../../Image/").ToList();
bmList = new ObservableCollection<BitmapImage>();
for (int i = 1; i < list.Count; i++)
{
Uri url = new Uri(list[i].Substring(5), UriKind.Relative);
BitmapImage bmImg = new BitmapImage(url);
bmList.Add(bmImg);
}
}
void CompositionTarget_Rendering(object sender, EventArgs e)
{
this.imgViewer.Source = bmList[index];
label1.Content = index.ToString();
this.imgViewer.Width = this.imgViewer.Source.Width;
this.imgViewer.Height = this.imgViewer.Source.Height;
}
}
以上代码参考http://www.cnblogs.com/dreamzgj/archive/2012/02/29/2373850.html修改而成。
效果图如下:
如果单击start按钮,程序会自动浏览图片。
如果单击左右按钮,可以手动浏览。