我是一个面向对象操作的初学者,在这个任务中,我有一个大约30张图片的数据,存储在一个文件夹中,并在我的应用程序中从中读取。图片包括蔬菜,果树,饮料和Papers。
我在课堂上读到:
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
}
}如何识别返回的图像是蔬菜、水果、报纸或饮料,因为随机图像将从列表中返回?然后,返回图像的识别将帮助我根据返回的图像类型调用特定类别的方法,即蔬菜、水果、纸张和饮料。
发布于 2020-04-20 20:05:30
如果将图像引用存储在列表中,只给变量指定不同的名称就无助于识别图像的类型。您需要一个具有两个属性的专门类。种类(各种图像类型的枚举)和类型为imgData的图像
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
}
}发布于 2020-04-20 20:01:00
你可以用元组来做这件事,首先我会做一个枚举
enum ImageType {
Newspaper,
Vegetable,
Etc..
}然后你会用一个元组
private List<Tuple<ImageType, Image>> images = new List<Tuple<ImageType, Image>>();您的功能现在应该是这样的。
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
}https://stackoverflow.com/questions/61330807
复制相似问题