一个PictureBox
有层它可以显示和PictureBox.DrawToBitmap
会把所有的三件事为位图:
- 的
BackgroundImage
- 的
Image
- 任何或从
Paint
事件创建图形
如果你r位图出来黑色,那么你没有三个,或者你最后一个都是黑色。 从您的描述看,好像你可以在PictureBox
中显示图像。 所以我认为你不正确的方式显示出来,可能你做这样的:
using (Graphics G = picFP.CreateGraphics())
G.DrawImage(yourCapturedImage, ..)
这是行不通的,因为它只会造成非持久图形。这些消失与例如每个最小化 - 恢复周期并且不从DrawToBitmap
调用
如果您确实想将其绘制到PB的表面上,请使用Paint
事件!但更自然的选择将直接设置PB的形象:
picFP.Image = yourCapturedImage;
更新1正如你现在表明,连你自己都不显示出来,而只是给控制手柄的外部代码objNitgen=picFP.Handle;
相同适用:这是Nitgen只吸取到表面和结果是非持久。
在这种情况下的补救办法是要么
对于这一点,你应该是一个句柄传递它不要PictureBox
但是到了Bitmap
代替:
private void button_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(picFP.ClientSize.Width, picFP.ClientSize.Height);
Graphics G = Graphics.FromImage(bmp);
IntPtr dc= G.GetHdc();
objNitgen = dc;
objNitgen.capture();
G.ReleaseHdc(dc);
pictureBox1.Image = bmp; // now display..
bmp.Save(yourfilename); // .. and/or save
}
更新2
您的评论指出,做手动截图也不会捕捉图像;所以看起来控制手柄只是用来像图像覆盖一样覆盖图像;如果是这种情况,我怀疑你可以在不使用其他更合适的Nitgen SDK方法的情况下获得图像。
来源
2015-11-05 10:54:26
TaW
如何捕获并显示图片框中的输出? – jhmt
我正在使用Nitgen SDK,我能够捕获指纹输出并将其显示在图片框中。 DrawToBitmap()给我一个空白的位图图像 – LDin
我在Nitgen SDK中没有任何经验,但是这个问题(http://stackoverflow.com/questions/14182487/windowsform-picturebox-image-is-null-even-though- theres-an-image-shown-in-the-f)可能对您有所帮助。 – jhmt