|
分類:[C#]
c#のwpfであるフォルダ内の画像ファイルをタイマーで一枚ずつ表示させたいのですが、うまい方法が見つかりません。よろしくお願いします。
以下ソースコード
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Collections;
using System.IO;
using System.IO.IsolatedStorage;
using System.Windows.Threading;
namespace hj
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
private DispatcherTimer m_Timer = null;
public MainWindow()
{
InitializeComponent();
// Loadedイベントの登録
this.Loaded += new RoutedEventHandler(Window_Loaded);
}
private void button1_Click(object sender, RoutedEventArgs e)
{
IEnumerable<string> files
= Directory.EnumerateFiles(
@"C:\Users\Public\Pictures\Sample Pictures", // 検索開始ディレクトリ
"*.jpg", // 検索パターン
SearchOption.AllDirectories); // サブ・ディレクトも含める
foreach (string file in files)
{
listBox1.Items.Add(file);
}
// タイマーの実行開始
m_Timer.Start();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// タイマーを作成する
m_Timer = new DispatcherTimer(DispatcherPriority.Normal, this.Dispatcher);
m_Timer.Interval = TimeSpan.FromSeconds(1);
m_Timer.Tick += new EventHandler(DispatcherTimer_Tick);
}
private void DispatcherTimer_Tick(object sender, EventArgs e)
{
int fileIndex = 0;
listBox1.SelectedIndex = fileIndex;
BitmapImage imageSource = new BitmapImage(new Uri( file));
fileIndex++;
}
public int file { get; set; }
}
}
ちなみに上のソースコードだとボタンを押してリストボックスに一覧が表示されるのですが、画像は表示されず、値をNullにすることができませんとなり、エラーになります。
|