【问题标题】:Complete folder picture viewer in c#c#中完整的文件夹图片查看器
【发布时间】:2018-08-06 20:07:22
【问题描述】:

在编程方面,我是一个完全的新手。我按照这里的教程创建了一个图片框。 http://msdn.microsoft.com/en-us/library/dd492135.aspx 我在 c# 中工作。现在我正在经历并做出一些改变。无论如何要制作代码以便可以有下一步和后退按钮?

如有任何帮助,将不胜感激。

谢谢, 热汉

【问题讨论】:

  • 是的,有......你可能想展示一些例子并提出另一个问题
  • 您要做的是将 OpenFileDialog 切换为 FolderBrowserDialog,在所选文件夹中构建图像集合,然后 Next/Back 按钮将逐步浏览集合并更新显示。祝你好运!

标签: c# image viewer


【解决方案1】:

如果我理解得很好,您希望有两个按钮 (Next, Back) 我做了一个小项目,如果对你有帮助,我会很高兴。

如果你想要这个,请继续阅读:

首先我们必须声明imageCountList<string>Imagefiles 所以我们有这个

List<string> Imagefiles = new List<string>();
int imageCount = 0;

imageCount 帮助使用按钮更改图像

Imagefiles 包含我们照片的所有图片路径

现在要更改照片,我们必须首先声明一个包含所有照片的路径。 我用FolderBrowserDialog

using (var fbd = new FolderBrowserDialog())
{
    DialogResult result = fbd.ShowDialog();

    if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath))
    {
        findImagesInDirectory(fbd.SelectedPath);
    }
 }

你会看到我使用findImagesInDirectory 并且这个方法不存在。我们必须创造它。 这个方法可以帮助我们过滤掉路径中的所有文件,只获取图片文件

private void findImagesInDirectory(string path)
{
    string[] files = Directory.GetFiles(path);
    foreach(string s in files)
    {
        if (s.EndsWith(".jpg") || s.EndsWith(".png")) //add more format files here
         {
            Imagefiles.Add(s);
         }
     }
     try
     {
         pictureBox1.ImageLocation = Imagefiles.First();
     }
     catch { MessageBox.Show("No files found!"); }

}

我使用try,因为如果没有带有上述扩展名的图像文件,则存在代码会中断。

现在我们声明所有图像文件(如果它们存在)

下一步按钮

    private void nextImageBtn_Click(object sender, EventArgs e)
    {
        if (imageCount + 1 == Imagefiles.Count)
        {
            MessageBox.Show("No Other Images!");
        }
        else
        {
            string nextImage = Imagefiles[imageCount + 1];
            pictureBox1.ImageLocation = nextImage;
            imageCount += 1;
        }
    }

上一个按钮

    private void prevImageBtn_Click(object sender, EventArgs e)
    {
        if(imageCount == 0)
        {
            MessageBox.Show("No Other Images!");
        }
        else
        {
            string prevImage = Imagefiles[imageCount -1];
            pictureBox1.ImageLocation = prevImage;
            imageCount -= 1;
        }

    }

我相信我的代码会有所帮助。希望没有错误!

【讨论】:

  • 不过,检索文件的顺序并不总是用户期望的顺序。我建议在使用之前对数组进行排序。
  • 您说得有道理,但是我现在想不出可能的代码。如果您有什么想法,请发布!
  • List 类只有一个 .Sort() 函数,它不带参数,采用默认比较器。对于String,这是正常的字母顺序。虽然也可以给它一个IComparer 对象以使用更高级的方法。我know one here that sorts it the way Windows explorer does.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
  • 2017-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多