Picturebox,设置并获取属性以将图像抛出空C#

问题描述 投票:0回答:1

我有一个图片框,之后将由OpenFileDialog()填充,我必须从中渲染直方图(图表)。我使用get和set属性将图片从图片框获取到另一个类或窗体。但是我总是得到NullReferenceException。打开图像文件后,位图似乎没有图像,因此它什么也不返回。我尝试用图像的完整路径填充bitmap参数,并且可以使用,但是OpenFileDialog()变得毫无意义。

  1. Click options button
  2. To render histogram chart

这是我的代码


主要形式

// button for opening image
private void openImage_Click(object sender, EventArgs e)
    {
        OpenFileDialog img = new OpenFileDialog();
        img.Title = "Open Image File...";
        img.Filter = "Image File (*.bmp, *.jpg, *.jpeg, *.png |*.bmp;*.jpg; *.jpeg;*.png";

        if (img.ShowDialog() == DialogResult.OK) {
            pbInput.Image = new Bitmap(img.FileName);
            // blablabla
        }
    }

    // set and get property
    public Image getImage {
        get { return pbInput.Image; }
        set { pbInput.Image = value; }
    }

直方图btn

    private void hist1_Click(object sender, EventArgs e)
    {
        h1 = new Histogram();
        h1.FormClosed += (s, a) => hist1.Enabled = true;
        hist1.Enabled = false;
        h1.Show();

    }

渲染直方图

public partial class Histogram : Form
{
    MainForm m = new MainForm();

    public Histogram()
    {
        InitializeComponent();

        Bitmap b = new Bitmap(m.getImage);

        //bla bla bla. . . . . *creating histogram code
    }
 }

Error message that I get

我希望这个问题足够清楚。谢谢..!PS:英语不是我的主要语言,所以对我的语法表示歉意,等等。

c# forms class properties picturebox
1个回答
0
投票

为什么不直接将图像分配给您的财产?

public Image getImage { get; private set; }

喜欢这样

if (img.ShowDialog() == DialogResult.OK) {
    getImage = new Bitmap(img.FileName);
    pbInput.Image = getImage;
}
© www.soinside.com 2019 - 2024. All rights reserved.