Un PictureBox
a trois couches, il peut afficher et PictureBox.DrawToBitmap
mettra trois choses dans le Bitmap:
- Les
BackgroundImage
- Les
Image
- Tous les graphiques créés ou de l'événement
Paint
Si vous r bitmap sort noir alors vous n'avez aucun des trois, ou le dernier que vous avez est tout noir. De votre description, il semble que vous pouvez afficher l'image dans le PictureBox
. donc je suppose que vous ne l'affiche pas dans le droit chemin, probablement vous le faites comme ceci:
using (Graphics G = picFP.CreateGraphics())
G.DrawImage(yourCapturedImage, ..)
Cela ne fonctionnera pas car il ne crée que non persistants graphiques. Ceux-ci disparaissent avec, par exemple, chaque cycle de minimisation-restauration et ne sont pas appelés depuis l'appel DrawToBitmap
Si vous voulez vraiment le dessiner sur la surface du PB, utilisez l'événement Paint
! Mais le choix le plus naturel serait de mettre l'image de PB directement:
picFP.Image = yourCapturedImage;
Mise à jour 1 Comme vous révélez maintenant que vous n'affichez pas vous-même mais simplement donner la poignée de commande au code externe objNitgen=picFP.Handle;
même s'applique: C'est que Nitgen dessine seulement sur la surface et le résultat est non persistant.
Dans ce cas, le remède est soit
Prendre une capture d'écran du résultat puis travailler à partir de cela. Here is a post qui vous montre comment capturer un contrôle via capture d'écran ..
Ou vous pouvez vérifier si Nitgen puisera dans un bitmap directement ..
Pour cela, vous devriez être à passer pas une poignée au PictureBox
mais à un Bitmap
à la place:
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
}
Mise à jour 2
Vous avez noté dans un commentaire qui fait un capture d'écran manuelle ne capture pas non plus l'image; il semble donc que la poignée de contrôle ne soit utilisée que pour la superposer à l'image comme le font les superpositions vidéo; Si tel est le cas, je doute que vous puissiez obtenir à l'image sans utiliser d'autres méthodes Nitgen SDK plus appropriées.
Comment capturer et afficher la sortie dans la zone d'image? – jhmt
J'utilise Nitgen SDK et je suis capable de capturer la sortie d'empreinte digitale et de l'afficher dans l'image. DrawToBitmap() me donne une image bitmap vide – LDin
Je n'ai aucune expérience dans Nitgen SDK mais cette question (http://stackoverflow.com/questions/14182487/windowsform-picturebox-image-is-null-even-though- theres-an-image-shown-in-the-f) pourrait vous être utile. – jhmt