首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择随机图像并根据特定类别显示它们

选择随机图像并根据特定类别显示它们
EN

Stack Overflow用户
提问于 2020-04-20 19:47:00
回答 2查看 35关注 0票数 1

我是一个面向对象操作的初学者,在这个任务中,我有一个大约30张图片的数据,存储在一个文件夹中,并在我的应用程序中从中读取。图片包括蔬菜果树饮料Papers

我在课堂上读到:

代码语言:javascript
复制
class Objects
{        
    private List<Image> images = new List<Image>();

    Image newspaper = Image.FromFile(@"C:\Users\User\Downloads\1.jpg");
    Image tomatoes = Image.FromFile(@"C:\Users\User\Downloads\2.jpg");
    //  More file paths like these .....

    public Image ReturnImages()
    {
        images.Add(newspaper);
        images.Add(tomatoes); 
        // All images added to the list like this ...

        Random random = new Random();           
        return images[random.Next(0, images.Count - 1)]; //returns a random image
    }
}

如何识别返回的图像是蔬菜、水果、报纸或饮料,因为随机图像将从列表中返回?然后,返回图像的识别将帮助我根据返回的图像类型调用特定类别的方法,即蔬菜、水果、纸张和饮料。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-20 20:05:30

如果将图像引用存储在列表中,只给变量指定不同的名称就无助于识别图像的类型。您需要一个具有两个属性的专门类。种类(各种图像类型的枚举)和类型为imgData的图像

代码语言:javascript
复制
public class ImageInfo
{
    public ImageKind kind {get;set;}
    public Image imgData {get;set;}
}
public enum ImageKind
{
    Vegetables = 0,
    Fruits,
    Drinks,
    Papers,
}
public class Objects
{        
    private List<ImageInfo> images = new List<ImageInfo>();

    ImageInfo newspaper = new ImageInfo {kind = ImageKind.Papers, imgData = Image.FromFile(@"C:\Users\User\Downloads\1.jpg")};
    ImageInfo tomatoes = new ImageInfo{ kind = ImageKind.Vegetables, imgData = Image.FromFile(@"C:\Users\User\Downloads\2.jpg")};
    //  More file paths like these .....

    public ImageInfo ReturnImages()
    {
        images.Add(newspaper);
        images.Add(tomatoes); 
        // All images added to the list like this ...

        Random random = new Random();           
        return images[random.Next(0, images.Count - 1)]; //returns a random image
    }
}
票数 2
EN

Stack Overflow用户

发布于 2020-04-20 20:01:00

你可以用元组来做这件事,首先我会做一个枚举

代码语言:javascript
复制
enum ImageType {
    Newspaper,
    Vegetable,
    Etc..
}

然后你会用一个元组

代码语言:javascript
复制
private List<Tuple<ImageType, Image>> images = new List<Tuple<ImageType, Image>>();

您的功能现在应该是这样的。

代码语言:javascript
复制
private static random = new Random()

public Tuple<ImageType, Image> ReturnImages()
{
    images.Add(new Tuple<ImageType, Image>(ImageType.Newspaper, newspaper));
    images.Add(new Tuple<ImageType, Image>(ImageType.Vegetable, tomatoes)); 
    // All images added to the list like this ...

    return images[random.Next(0, images.Count - 1)]; //returns a random image
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61330807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档