PictureBox
имеет три слоя он может отображать и PictureBox.DrawToBitmap
поставит все три вещи в Bitmap:
- The
BackgroundImage
- The
Image
- Любые графики, созданные в или из
Paint
события
Если вы r bitmap выходит черным, тогда у вас нет ни одного из трех, или последнее, что у вас есть, все черное. Из вашего описания кажется, что вы можете отобразить изображение в PictureBox
. Так что я предполагаю, что вы не отображать его в правильном направлении, вероятно, вы делаете это так:
using (Graphics G = picFP.CreateGraphics())
G.DrawImage(yourCapturedImage, ..)
Это не будет работать, как это только создает непостоянные графику. Они уходят, например, каждый цикл с минимальным восстановлением и не вызывается из DrawToBitmap
звонок
Если вы действительно хотите нарисовать его на поверхности PB, используйте событие Paint
! Но более естественный выбор будет установить изображение ПБ непосредственно:
picFP.Image = yourCapturedImage;
Update 1 Как вы теперь показывают, что вы не проявляете сами, а просто дать ручку управления к внешнему коду objNitgen=picFP.Handle;
то же самое применяется: именно Nitgen рисует только на поверхности, и результат нестабильный.
В этом случае средство либо
Принимая скриншот результата, а затем работать с этим. Here is a post, который показывает вам, как захватить контроль через скриншот ..
Или вы можете проверить, если 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
}
Update 2
Вы отметили в комментарии, что делает ручная скриншот также не фиксирует изображение; поэтому кажется, что управляющий дескриптор используется только для того, чтобы наложить его на изображение так же, как и наложения видео; если это так, я сомневаюсь, что вы можете получить изображение без использования других, более подходящих методов Nitgen SDK.
Как вы снимаете и показываете вывод в окне изображения? – jhmt
Я использую Nitgen SDK, и я могу захватить вывод отпечатка пальца и отобразить его в окне изображения. DrawToBitmap() дает мне пустой растровый образ – LDin
У меня нет опыта работы с Nitgen SDK, но этот вопрос (http://stackoverflow.com/questions/14182487/windowsform-picturebox-image-is-null-even-though- theres-a-image-shown-in-the-f) может быть вам полезна. – jhmt