Bitmap à partir d'une fenêtre... Help!

Résolu
cs_Zekez Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 26 septembre 2006 - 29 mars 2005 à 15:25
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 30 mars 2005 à 15:03
Bonjour,

je suis en train de faire une application en C# dans laquelle j'ai besoin d'insérer une sorte de printscreen d'une fenêtre dans une bitmap... Donc faire une copie graphique d'une Form et la placer dans une bitmap.

Je ne sais pas du tout comment je peux faire ça, je sais que la méthode bitmap reçoit un paramètre Image... il faudrait alors créer un objet Image mais le problème est tjs le même, je ne sais pas faire le "printscreen" pour remplir l'objet Image...

Merci de bien vouloir m'aider si quelqu'un a une soluce.

4 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
29 mars 2005 à 21:43
Ceci va te permettre de capturer la forme (ou le control plutot) depuis lequel tu l'appeles, et mettre le resultat dans un leBitmap bmp)

// Les variables Win32
private int WM_PRINT = 0x0317;
private int PRF_CHECKVISIBLE = 0x00000001;
private int PRF_NONCLIENT = 0x00000002;
private int PRF_CLIENT = 0x00000004;
private int PRF_ERASEBKGND = 0x00000008;
private int PRF_CHILDREN = 0x00000010;
private int PRF_OWNED = 0x00000020;

// Le code
Bitmap bmp = new Bitmap(this.Width, this.Height);
Graphics bmpGraphics = Graphics.FromImage(bmp);
IntPtr bmpHdc = bmpGraphics.GetHdc();


Message msg = new Message();
msg.Msg = WM_PRINT;
msg.HWnd = this.Handle;
msg.WParam = bmpHdc;
msg.LParam = new IntPtr(PRF_NONCLIENT | PRF_CLIENT | PRF_ERASEBKGND | PRF_CHILDREN | PRF_OWNED);
this.WndProc(ref msg);


bmpGraphics.ReleaseHdc(bmpHdc);
bmpGraphics.Dispose();

Tu as plus qu'a dessiner ton bmp !
Mx
3
cs_Zekez Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 26 septembre 2006
30 mars 2005 à 00:17
C'est super, je suis arrivé à faire tout ce que je voulais à partir de ça!

Un grand merci pour l'aide!
0
cs_Zekez Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 26 septembre 2006
30 mars 2005 à 14:52
Peut-être une petite question...

Je ne sais pas ce que sont exactement ces variables Win32... qu'est-ce qu'elles représentent exactement dans le code? (Pour que je puisse placer des commentaires)

private int WM_PRINT = 0x0317;
private int PRF_CHECKVISIBLE = 0x00000001;
private int PRF_NONCLIENT = 0x00000002;
private int PRF_CLIENT = 0x00000004;
private int PRF_ERASEBKGND = 0x00000008;
private int PRF_CHILDREN = 0x00000010;
private int PRF_OWNED = 0x00000020;

Merci.
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
30 mars 2005 à 15:03
Ce sont des constantes Win32 qui correspondent a des messages.

Si tu utilises Visual Studio, tu peux retrouver ces constantes dans ton dossier VC7\platform sdk\include\WinUser.h

Mx
0
Rejoignez-nous