每次按下按钮时如何显示列表中的随机图像?C#.

本文关键字:列表 随机 图像 显示 按钮 何显示 | 更新日期: 2023-09-27 18:33:10

所以我对C#完全陌生,我一直在为桌面RPG构建一个"角色生成器"。我分配了一个按钮,其任务是每次按下时生成一个新故事。我已经下载了大量的人物肖像,我想在我的这个小应用程序中展示,以给用户一些灵感。

我认为使用按钮可以让应用程序在每次按下时在上述列表中选择不同的图像。

我试过这个:

private void button1_Click(object sender, EventArgs e)
{
        List<String> paths = new List<String>();
        Random random = new Random();
        paths.Add(Project1.Cartes.Portrait);
        pictureBox1.ImageLocation = paths[random.Next(0, images.Count - 1)];

我收到两个错误:Project1.Cartes.Portrait 是一个无效的命名空间,并且名称"images"不存在。

我不能提到每张图片,因为有 500 张。所以我需要应用程序从特定位置拍摄随机图像。有什么想法吗?

每次按下按钮时如何显示列表中的随机图像?C#.

没有足够的代码是确定的,但是,错误确实表明了错误所在。例如,变量images在哪里定义,它是什么类型,以及如何初始化?另外,我假设Project1.Cartes.Portrait是图像的路径列表,并且应该定义为当前命名空间中的某个地方List<string>

正如我在评论中指出的那样,我认为Project1.Cartes.Portrait不是您所期望的。它应该是磁盘上任何图像文件的List<string>,但它可能会将字符串表示形式添加到paths列表中。

像这样:

System.Collections.Generic.List1[System.String](这绝对不是图像文件的路径)

而不是预期的:

C:'mypath1.jpg
C:'mypath2.jpg
C:'mypath3.jpg

因此,请在paths.Add(Project1.Cartes.Portrait)使用断点停止调试器,并检查变量paths是否是您所期望的。

顺便说一句,如果Project1.Cartes.Portrait指向一个真正的List<string>,你应该使用paths.AddRange(...)而不是paths.Add(...)从列表中添加字符串内容,而不是列表本身。

在加载表单时存储图像的位置。另外,您需要使用波纹管删除图像。

pictureBox1.ImageLocation = paths[random.Next(0, paths.Count - 1)];

这是完整的代码。只需要将文件名存储在列表中即可。

List<String> paths = new List<String>();
    private List<string> GetPaths()
    {
        //You can get it anywhere
        throw new NotImplementedException();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        paths = GetPaths();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        Random random = new Random();
        pictureBox1.ImageLocation = paths[random.Next(0, paths.Count - 1)];
    }