Bonjour,
Je tente, pour le fun, de jouer avec la capture d'image.
Je voudrais que ma form affiche la partie du bureau qui est juste en-dessous, en gros pour faire semblant à de la transparence quoi ...
j'ai implémenté ces 3 fonctions:
et dans mon évènement Paint j'ai ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 [DllImport("gdi32.dll")] static extern IntPtr CreateDC(string lpszDriver, string lpszDevice, string lpszOutput, IntPtr lpInitData); [DllImport("gdi32.dll")] static extern IntPtr DeleteDC(IntPtr hdc); [DllImport("gdi32.dll")] static extern bool BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, uint dwRop);
BitBlt capture pour le moment une zone fixe de l'ecran car si j'essaie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 IntPtr hdc = CreateDC("DISPLAY", null, null, IntPtr.Zero); Graphics g = e.Graphics; IntPtr dc = g.GetHdc(); bool t = BitBlt(dc, 0, 0, this.Width, this.Height, hdc, 50, 50, SRCCOPY); g.ReleaseHdc(dc); DeleteDC(hdc);
un truc du genre
et bien la form se capture elle même en fait...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 bool t = BitBlt(dc, 0, 0, this.Width, this.Height, hdc, this.Left, this.Top, SRCCOPY);
Quelle astuce utiliser pour pouvoir faire ça ?
merci d'avance
Ben
Partager