我有2个表单,From1和Form2。通过单击按钮,图像将发送到Form2,以便在表单2的pictureBox中显示。
每当我点击按钮时,会打开一个新的Form2并显示图像,但这不是我所追求的。
我希望Form2中的pictureBox中的图像得到更新,并且只有一个Form2(第一次打开)保留。
这是我在Form1中的代码:
Image<Bgr, byte> imResult =DrawMatches(imColor,Points1, imColorPrv,Points2,Indices, new Bgr(System.Drawing.Color.Yellow), new Bgr(System.Drawing.Color.Red);
Form2 frmDrawMatchPoints = new Form2(imResult);
frmDrawMatchPoints.Show();
这是我在Form2中的代码:
Image<Bgr, byte> imResult;
public Form2(Image<Bgr, byte> imResult)
{
InitializeComponent();
this.imResult = imResult;
}
private void Form2_Load(object sender, EventArgs e)
{
picBoxMatches.Image = imResult.ToBitmap();
}
答案 0 :(得分:2)
您可以向Form2添加新方法:
public UpdateImage(Image<Bgr, byte> imResult)
{
this.imResult = imResult;
picBoxMatches.Image = imResult.ToBitmap();
}
然后在Form1中你可以这样做:
private Form2 form2; // Some private field
// Inside the event handler
if (form2 == null)
form2 = new Form2(imResult);
else
form2.UpdateImage(imResult);
答案 1 :(得分:1)
将其置于全球范围
public Form2 frmDrawMatchPoints = new Form2();
使用相同参数在Form2中创建新功能以预览图片
public void PreviewPicture(Image<Bgr, byte> imResult)
{
this.imResult = imResult;
}
在Form1中,您应该只有:
Image<Bgr, byte> imResult =DrawMatches(imColor,Points1, imColorPrv,Points2,Indices, new Bgr(System.Drawing.Color.Yellow), new Bgr(System.Drawing.Color.Red);
frmDrawMatchPoints.PreviewPicture(imResult);
frmDrawMatchPoints.Show();