将图像属性设置为文件路径

4

我有一个人的类如下,其中有一个图像作为属性。我正在尝试弄清楚如何在我的程序类中创建person类的实例,并将对象的图像设置为文件路径,例如C:\ Users \ Documents \ picture.jpg。 我该怎么做?

 public class Person
 {
    public string firstName { get; set; }
    public string lastName { get; set; }
    public Image myImage { get; set; }

    public Person()
    {
    }

    public Person(string firstName, string lastName, Image image)
    {
        this.fName = firstName;
        this.lName = lastName;
        this.myImage = image;
    }
 }

2
myImageImage 类型而不是 String,那么你想把文件路径存储在哪里呢?或者你想相应地更改此属性的类型吗? - Tim Schmelter
4个回答

1
使用您的无参构造函数,如下所示:
Person person = new Person();
Image newImage = Image.FromFile(@"C:\Users\Documents\picture.jpg");
person.myImage = newImage;

尽管使用另一个构造函数应该是首选方法。

谢谢,但我需要在程序类中导入任何命名空间才能做到这一点吗? 我有System.Drawing,但在Image之后没有列出FromFile选项。 - bookthief
FromFileImage 类 的一部分。你的项目中是否有其他名为 Image 的类? - Liel

1

One option would be this:

public Person(string firstName, string lastName, string imagePath)
{
    ...
    this.myImage = Image.FromFile(imagePath);
}

1
尝试像这样:

这样试试:

public class Person
 {
    public string firstName { get; set; }
    public string lastName { get; set; }
    public Image myImage { get; set; }
    public Person()
    {
    }
    public Person(string firstName, string lastName, string imagePath)
    {
       this.fName = firstName;
       this.lName = lastName;
       this.myImage = Image.FromFile(imagePath);
    }
}

像这样实例化:

Person p = new Person("John","Doe",@"C:\Users\Documents\picture.jpg");

1

其他人已经建议使用Image.FromFile。你应该知道这会锁定文件,可能会在以后导致问题。更多阅读请参见:

为什么 Image.FromFile 有时会保持文件句柄打开状态?

考虑改用Image.FromStream方法。以下是一个示例方法,它接受路径并返回图像:

private static Image GetImage(string path)
{
    Image image;
    using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read))
    {
        image = Image.FromStream(fs);
    }
    return image;
}

这种方法的价值在于您可以控制何时打开和关闭文件句柄。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接