单击按钮时从资源中随机播放图片

2024-03-28

我有 1 个图片盒,名为studPic。我想要得到的是,当我单击“随机播放”按钮时,从资源中获取随机图像。

private void button2_Click(object sender, EventArgs e)
        {
...     
        }

经过研究我发现以下

http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/38d36fa4-1f5f-43e9-80f6-3c9a4edc7705/ http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/38d36fa4-1f5f-43e9-80f6-3c9a4edc7705/

我是 C# 的新手..有没有更简单的方法来实现这个结果?比如不加图片名称?

UPDATE

List<string> pictureNames = new List<string>();
pictureNames.Add("1");
pictureNames.Add("2");
pictureNames.Add("3");
int randomPictureIndex = new Random().Next(0, pictureNames.Count);
string randomPictureName = pictureNames[randomPictureIndex];
pictureNames.Remove(randomPictureName);
Image img = Properties.Resources.randomPictureName; //erroor
studPic.Image = img;

收到错误消息 错误 1“Properties.Resources”不包含“randomPictureName”的定义


我不会为此使用系统资源。它们不像离线软件的文件系统那样可维护。

将您的图像放在应用程序的文件夹中。这样它们就可以轻松更新/更改。 说 :

C:\Ninjas - app
c:\Ninjas\images - images

创建一个数组来保存这些图像。

string[] files = System.IO.Directory.GetFiles("c:\ninjas\images");

您需要在 GetFiles 上放置一些过滤器,以确保您只获取图片。

现在在该数组中抓取一个随机位置(您已经表明您知道如何进行随机数)。

我们有了数组,让我们对它进行洗牌,然后你可以按顺序浏览它们(比随机挑选要快得多。CPU 会喜欢你的)

    private string[] files;
    private int currentIndex = 0;

    private void initializeImages()
    {
        //Grab directories in your images directory
        string appRoot = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
        files = System.IO.Directory.GetFiles(appRoot + @"\images");
        Random rnd = new Random();
        files = files.OrderBy(x => rnd.Next()).ToArray();
    }


    private void setImage()
    {
        pictureBox1.ImageLocation = files[currentIndex];
    }

    private void previousImage()
    {
        currentIndex = currentIndex > 0 ? currentIndex - 1 : 0;
        setImage();
    }

    private void nextImage()
    {
        currentIndex = currentIndex < files.Length - 1 ? currentIndex + 1 : files.Length - 1;
        setImage();
    }

有几件事:

  • 不要对文件路径进行硬编码。将其放入您的 app.config 文件中并引用它。
  • 您可以将文件数组置于全局,这样就不需要每次都运行它。

如果您想将其作为幻灯片放映,一直运行到用户取消为止,我建议您执行以下操作:

  • 使用计时器对象来调用方法来增加图像计数,从而改变图片。
  • 不要在 GUI 上使用 thread.sleep,因为它会暂停 GUI - 这不是一件好事。

如果要添加“下一个”/“上一个”按钮,则需要有一个可以增加/减少的全局索引(例如 currentIndex),然后调用代码来设置图像

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单击按钮时从资源中随机播放图片 的相关文章

随机推荐