[C#] Screenshot d'une partie d'une fenêtre

Screenshot d'une partie d'une fenêtre [C#] - C#/.NET managed - Programmation

Marsh Posté le 19-12-2006 à 16:57:53    

Bonsoir,
 
Je suis en train d'essayer de faire un programme C# sous visual studio 2005, qui récupererait une zone autour du pointeur de la souris.
En d'autres termes, récuperer tout les pixels adjacents a ma souris dans un rayon de 50 pixels et l'avoir sous forme d'une Bitmap.
 
Bon, j'arrive à prendre un screenshot de ma fenêtre entière, que j'ai récuperé avant sous forme d'un IntPtr, dans une hBitmap que je convertit en Bitmap et j'en fait ce que j'en veux. Mon problème est que traiter l'image entière prend trop de temps, or je n'ai besoin que de faire un traitement de ce qu'il y'a autour de mon curseur.
 
Voilà un bout du code actuel :
 
IntPtr appflash => ma fenêtre
SIZE size; => taille de ma fenêtre, servira pour définir la taille de la Bitmpa qui sera generée
 

Code :
  1. // Récupere le hDC de ma fenêtre
  2. IntPtr hDC = PlatformInvokeUSER32.GetWindowDC(appflash);
  3. // Récupère le screenshot de ma fenêtre dans une hBitmap
  4. hBitmap = PlatformInvokeGDI32.CreateCompatibleBitmap(hDC, size.cx, size.cy);


 
Puis je convertit ma hBitmap en Bitmap, ça ça marche impec.
Si je ne veux qu'une certaine zone de ma Bitmap je peux très bien récuperer les coordonées de ma souris ( mpos ) et faire des vieilles boucles allant de mpos.x - 50 à mpos.x + 50 , et de mpos.y - 50 à mpos.y +50 en faisant des GetPixel sur ma bmp. Ca ça marche aussi.
 
Je pense que la conversion d'une hBitmap en Bitmap est assez gourmande en temps processeur, du coup si je pouvais convertir que la zone autour du curseur, je pense que ça me ferait gagner de précieuses millisecondes ..
 
Reste à savoir si c'est possible d'avoir juste la zone dans notre hBitmap avant de faire la conversion en Bitmap, des idées ?
 
Si on met size.x et size.y à 100 on obtient une Bitmap 100 x 100 mais du coin en haut à gauche du screenshot entier... Ce qui me laisse penser que ça doit être possible de selectionner que la zone du curseur >.<
 
Mais comme je ne connais pas bien les structures que je manipule je ne trouve pas par moi même, je fais donc appel à votre ingénieux savoare :)
 
Merci d'avance !
 
 

Reply

Marsh Posté le 19-12-2006 à 16:57:53   

Reply

Marsh Posté le 19-12-2006 à 19:22:12    

Vouloir récupérer les code des sites de banques c'est mal :o


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 19-12-2006 à 20:04:23    

Gnéh ?
Connaisseur ?
 
C'est plutot pour un projet d'études où je dois developper un prog de controle à distance, VLC like quoi.
Donc il faut pouvoir voir l'écran de la machin du client en live, j'envoie 5 screenshots de la fenetre active par seconde , mais c'est lent.
 
Après je n'ai pas vraiment à me justifier.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed