0

我有 2 个表格,From1 和 Form2。通过单击一个按钮,图像被发送到 Form2 以显示在 Form 2 的 pictureBox 中。

每次我单击按钮时,都会打开一个新的 Form2 并显示图像,但这不是我想要的。

我希望只更新 Form2 的图片框中的图像,并且只保留一个 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();
}
4

2 回答 2

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);
于 2013-04-03T21:40:18.920 回答
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();
于 2013-04-03T21:49:26.170 回答