我正在尝试做的...
我正在研究一个包含DigitalPersona SDK CaptureForm和EnrollmentForm的项目。该项目还包括一个主窗体,出于这个问题的考虑,我们将其称为Form1。此表单包括一个名为picturebox1的图片框和一个名为button1的按钮。当我单击button1时,将执行以下代码。
private void button1_Click(object sender, EventArgs e)
{
EnrollmentForm enroll = new EnrollmentForm();
enroll.ShowDialog();
}
在EnrollmentForm中,我具有DigitalPersona SDK中提供的控件设置。它在称为“图片”的图片框中捕获精细的指纹。我想做的就是做到这一点,以便当我关闭EnrollmentForm时,将在图片框中捕获的图像转移到Form1上的图片框中。
我尝试过的...
我已经尝试过许多在stackoverflow和Google上找到的示例。第一种是创建一个FormClosing事件,并尝试将图像从EnrollmentForm传递到Form1。我这样做是通过在Form1.Designer.cs中公开公开Form1上的picturebox1,然后将以下代码放入EnrollmentForm中来实现的。
private void EnrollmentForm_FormClosing(object sender, FormClosingEventArgs e)
{
Form1 frm = new Form1();
frm.picturebox1.Image = Picture.Image;
}
这样编译就没有问题,但是一旦捕获了图像并关闭了表单,该图像就永远不会传输到Form1。在做进一步的研究时,我发现了一篇文章,当模态打开第二种形式时,提出了以下方法。
在Form1中,我将button1_Click修改为如下所示。
private void button1_Click(object sender, EventArgs e)
{
EnrollmentForm enroll = new EnrollmentForm();
enroll.ShowDialog();
picturebox1.Image = enroll.SelectedImage;
}
然后在EnrollmentForm中,添加了以下代码。
public Image SelectedImage
{
get { return Picture.Image; }
}
再次,此编译。指纹被捕获,但是当EnrollmentForm关闭时,图像从未传输到Form1上的picturebox1。
我真的不确定在这里我做错了什么。最终,Form1将包含多个图片框,并将利用EnrollmentForm来填充每个图片框。感谢您的协助。
面向未来读者的更新:只是以为我会添加最终有用的内容。事实证明,SDK的EnrollmentForm从CaptureForm获取图片。我最终使按钮改为打开CaptureForm,并尝试将图像传输到主表单,并且它可以正常工作。
最佳答案
第1步:在EnrollmentForm中创建一个图像类型的公共变量,例如enImage,然后在注册表单的Closing事件中将其设置为enImage = yourpictureboxcontrolname.Image;
步骤2:在主窗体中,创建另一个名为mainImage的图像类型变量,并在按钮click事件中添加此代码
EnrollmentForm enroll = new EnrollmentForm();
enroll.ShowDialog();
mainImage = enroll.enImage;
picturebox1.Image=mainImage;
我测试了这段代码,它正在工作。