从方法返回图像

时间:2012-12-01 05:29:51

标签: c#

我在这个方法上遇到问题,我正在努力返回已添加到列表中的图像,所以当它完成时,所有已添加的图片都可以显示在我拥有的PictureBox上。现在,该方法只是添加图像。所以我希望该方法返回List中的所有图像,这样我就可以在PictureBox上显示它们。任何帮助或建议,我都会非常感激

private List<Image> CollectionOfPictures;

public Image ReturnPictures(List<Image> pics)
{
    foreach (Image image in pics)
    {
        CollectionOfPictures.Add(image);
    }
}

4 个答案:

答案 0 :(得分:0)

为什么你不能这样做

public List<Image> ReturnPictures(List<Image> pics)
{
    return  pics;
}

答案 1 :(得分:0)

我看到了几个不同的选项:

  1. 将您的图像列表公开给绘制图像的任何内容(也称为公开)
  2. 列表是引用类型,因此如果您不能执行#1,则按值传递它应保留添加到其中的任何内容。
  3. 或者我可能过度简化了你的问题。在这种情况下,我会要求你重申它。


    编辑以回应你的:

    你提出的方法是不合逻辑的。一种获取图像列表而只返回一个而不选择返回图像的方法。

    我相信你的意思是:

    private List<Image> CollectionOfPictures;
    
    public List<Image> ReturnPictures(List<Image> pics)
    {
        foreach (Image image in pics)
        {
            CollectionOfPictures.Add(image);
        }
    }
    

    哪个可以更好地表示为:

    private List<Image> CollectionOfPictures;
    
    public List<Image> ReturnPictures(List<Image> pics)
    {
        return CollectionOfPictures.Concat(pics).ToList();
    }
    

    或直接使用Linq方法一起跳过该方法。

    或者保留呼叫之间的列表:

    private List<Image> CollectionOfPictures;
    
    public List<Image> ReturnPictures(List<Image> pics)
    {
        return (CollectionOfPictures = CollectionOfPictures.Concat(pics).ToList());
    }
    

    没有LINQ:

    private List<Image> CollectionOfPictures;
    
    public List<Image> ReturnPictures(List<Image> pics)
    {
        foreach (Image image in pics)
        {
            CollectionOfPictures.Add(image);
        }
    
        return CollectionOfPictures;
    }
    

答案 2 :(得分:0)

如果您要逐个显示它们,您只需返回CollectionOfPictures的元素即可。 我假设会有一个导航在列表中的图片之间来回移动?你可以做点什么

int currentIndex = 0
public Image getImage() {
return CollectionOfPictures[currentIndex];
}

public void nextPicture() {
//check if currentIndex < the length
currentIndex++;
}


public void prevPicture() {
//check if currentIndex >0

currentIndex--;
}

答案 3 :(得分:0)

你可以这样做

private List<Image> CollectionOfPictures;

public List<Image> ReturnPictures(List<Image> pics)
{
    CollectionOfPictures = new List<Image>();
    foreach (Image image in pics)
    {
        CollectionOfPictures.Add(image);
    }
    return CollectionOfPictures;
}

或只是

public List<Image> ReturnPictures(List<Image> pics)
{
    return  pics;
}