自动图片滑块C#

时间:2014-07-31 19:11:45

标签: c#

我希望当表单加载和/或启动我的图片幻灯片将自动启动。我试图放置文件夹所在的路径,但它一直给出错误。当我使用它时,它的工作对话框。我试图绕过对话框,以便它自动启动。

 public partial class Form1 : Form
  {
    private string[] folderFile = null;
    private int selected = 0;
    private int end = 0;

    FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
    // The folder is pre created
    string path1 = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "\\Pictures";


    public Form1()
    {
        InitializeComponent();

         //This does not work when the form starts up.


        if (!Directory.Exists(path1))
        {
            string[] part1 = null, part2 = null, part3 = null;

            part1 = Directory.GetFiles(path1, "*.jpg");
            part2 = Directory.GetFiles(path1, "*.jpeg");
            part3 = Directory.GetFiles(path1, "*.bmp");

            folderFile = new string[part1.Length + part2.Length + part3.Length];

            Array.Copy(part1, 0, folderFile, 0, part1.Length);
            Array.Copy(part2, 0, folderFile, part1.Length, part2.Length);
            Array.Copy(part3, 0, folderFile, part1.Length + part2.Length, part3.Length);

            selected = 0;
            //begin = 0;
            end = folderFile.Length;

            showImage(folderFile[selected]);

            // 5 to 10 second intervals
            //timer1.Enabled = true;

        }
        else
        {

        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }


    private void timer1_Tick(object sender, EventArgs e)
    {
        nextImage();
    }

    private void btnFolder_Click(object sender, EventArgs e)
    {
        //Original
        //This works!!


        //while (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
        //{
        //    string[] part1 = null, part2 = null, part3 = null;

        //    part1 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.jpg");
        //    part2 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.jpeg");
        //    part3 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.bmp");

        //    folderFile = new string[part1.Length + part2.Length + part3.Length];

        //    Array.Copy(part1, 0, folderFile, 0, part1.Length);
        //    Array.Copy(part2, 0, folderFile, part1.Length, part2.Length);
        //    Array.Copy(part3, 0, folderFile, part1.Length + part2.Length, part3.Length);

        //    selected = 0;
        //    //begin = 0;
        //    end = folderFile.Length;

        //    showImage(folderFile[selected]);

        //    //btnPrev.Enabled = true;
        //    //btnNext.Enabled = true;
        //    //btnStartSlide.Enabled = true;

        //}
    }

    private void showImage(string path)
    {
        Image imgtemp = Image.FromFile(path);
        //pictureBox1.Width = imgtemp.Width / 2;
        //pictureBox1.Height = imgtemp.Height / 2;
        //pictureBox1.Image = imgtemp;
        panel1.BackgroundImage = imgtemp;
    }

    private void prevImage()
    {
        if (selected == 0)
        {
            selected = folderFile.Length - 1;
            showImage(folderFile[selected]);
        }
        else
        {
            selected = selected - 1;
            showImage(folderFile[selected]);
        }
    }

    private void nextImage()
    {
        if (selected == folderFile.Length - 1)
        {
            selected = 0;
            showImage(folderFile[selected]);
        }
        else
        {
            selected = selected + 1;
            showImage(folderFile[selected]);
        }
    }

    private void btnPreviews_Click(object sender, EventArgs e)
    {
        prevImage();
    }

    private void btnNext_Click(object sender, EventArgs e)
    {
        nextImage();
    }

    private void btnStart_Click(object sender, EventArgs e)
    {
        if (timer1.Enabled == true)
        {
            timer1.Enabled = false;
            btnStart.Text = "<< START >>";
        }
        else
        {
            timer1.Enabled = true;
            btnStart.Text = "<< STOP >>";
        }
    }


}

}

1 个答案:

答案 0 :(得分:1)

尝试

string path1 = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + "\\Sample_Pictures";

string path1 = Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures) + "\\Sample_Pictures";

或使用

string publicDesktopPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory);
var directory = new DirectoryInfo(publicDesktopPath);
string path1 = directory.Parent.FullName + "\\Pictures\\Sample_Pictures";

并修复条件

if (!Directory.Exists(path1)) {

if (Directory.Exists(path1)) {

这样您就不会在不存在的目录上尝试操作。

要让图片循环显示,您可以使用System.Timers.Timer

在您的Form1类

private static Timer timer;

在构造函数中声明计时器:

timer = new System.Timers.Timer(5000); // change interval in milliseconds
timer.Elapsed += OnTimedEvent;
timer.Enabled = true;

在Form1类中创建OnTimedEvent方法:

private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
    // Do what you want every time the timer elapses that interval
    nextImage();
}