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;
    }
 }
4

4 回答 4

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;
}

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

于 2013-07-03T14:23:09.643 回答
1

使用您的无参数构造函数,如下所示:

Person person = new Person();
Image newImage = Image.FromFile(@"C:\Users\Documents\picture.jpg");
person.myImage = newImage;

尽管使用其他构造函数应该是首选方法

于 2013-07-03T14:16:56.057 回答
1

一种选择是:

public Person(string firstName, string lastName, string imagePath)
{
    ...
    this.myImage = Image.FromFile(imagePath);
}
于 2013-07-03T14:17:44.057 回答
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");
于 2013-07-03T14:19:37.913 回答