C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: c# wpf フォルダ内のすべての画像表示


(過去ログ 107 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■63776 / inTopicNo.1)  c# wpf フォルダ内のすべての画像表示
  
□投稿者/ poigumi (10回)-(2012/10/09(Tue) 20:00:36)

分類:[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にすることができませんとなり、エラーになります。

引用返信 編集キー/
■63777 / inTopicNo.2)  Re[1]: c# wpf フォルダ内のすべての画像表示
□投稿者/ 真白けい (2回)-(2012/10/09(Tue) 21:01:15)
> private void DispatcherTimer_Tick(object sender, EventArgs e)
> {
> int fileIndex = 0;
> listBox1.SelectedIndex = fileIndex;
> BitmapImage imageSource = new BitmapImage(new Uri( file));
> fileIndex++;
> }

このままでは関数を呼び出したときにまたfileIndexが0になってしまいます。
パブリックではなく、グローバルでfileIndexを宣言してやってみてください。
引用返信 編集キー/
■63778 / inTopicNo.3)  Re[2]: c# wpf フォルダ内のすべての画像表示
□投稿者/ poigumi (11回)-(2012/10/09(Tue) 21:02:34)
No63777 (真白けい さん) に返信
>> private void DispatcherTimer_Tick(object sender, EventArgs e)
>> {
>> int fileIndex = 0;
>> listBox1.SelectedIndex = fileIndex;
>> BitmapImage imageSource = new BitmapImage(new Uri( file));
>> fileIndex++;
>> }
>
> このままでは関数を呼び出したときにまたfileIndexが0になってしまいます。
> パブリックではなく、グローバルでfileIndexを宣言してやってみてください。

まさしくそれでした。おかげで動きました。ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -