我有一个图片框,之后将由OpenFileDialog()
填充,我必须从中渲染直方图(图表)。我使用get和set属性将图片从图片框获取到另一个类或窗体。但是我总是得到NullReferenceException。打开图像文件后,位图似乎没有图像,因此它什么也不返回。我尝试用图像的完整路径填充bitmap参数,并且可以使用,但是OpenFileDialog()
变得毫无意义。
这是我的代码
主要形式
// 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
}
}
我希望这个问题足够清楚。谢谢..!PS:英语不是我的主要语言,所以对我的语法表示歉意,等等。
为什么不直接将图像分配给您的财产?
public Image getImage { get; private set; }
喜欢这样
if (img.ShowDialog() == DialogResult.OK) {
getImage = new Bitmap(img.FileName);
pbInput.Image = getImage;
}