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

わんくま同盟

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

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


(過去ログ 107 を表示中)
■63651 / )  Re[3]: c# フォームアプリケーションでの画像の連続表示
□投稿者/ 魔界の仮面弁士 (60回)-(2012/09/21(Fri) 21:26:39)
No63650 (poigumi さん) に返信
> timerののIntervalを1000ミリ秒にしてみたのですが、これだとすぐ最後の画像が表示されてしまいました。
そもそも、ループ処理は使いません。

timer1.Start(); を一回呼べば、その後、1000 ミリ秒ごとに
>         private void timer1_Tick(object sender, EventArgs e)
>         {   
>            
>         }
のイベントが定期的に呼び出されますので、そこで画像を一つだけ表示させます。

1 回目に呼ばれた Tick イベントでは、1つ目の画像を。
2 回目に呼ばれた Tick イベントでは、2つ目の画像を。
n 回目に呼ばれた Tick イベントでは、nつ目の画像を。

最後の画像まで表示した時に、1つ目の画像を表示するのか、
それとも timer1.Stop(); で止めてしまうのかはお好みで。


> よくわからないのでソースコードを書いていただけないでしょうか?

using System;
using System.IO;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private string[] files = { };
        private int fileIndex = -1;

        private void button1_Click(object sender, EventArgs e)
        {
            string picPath = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
            files = Directory.GetFiles(picPath, "*.jpg", SearchOption.AllDirectories);

            listBox1.DataSource = files.Select(f => Path.GetFileName(f)).ToArray();

            if (files.Length == 0)
            {
                fileIndex = -1;
                MessageBox.Show("ファイルがありません。", "",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                fileIndex = 0;
                timer1.Interval = 1000;
                timer1.Start();
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (fileIndex >= files.Length)
            {
                timer1.Stop();
            }
            else
            {
                listBox1.SelectedIndex = fileIndex;

                pictureBox1.LoadAsync(files[fileIndex]);
                fileIndex++;
            }
        }
    }
}

返信 編集キー/


管理者用

- Child Tree -