Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1236 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1493619
hchc
Posté le 19-12-2006 à 16:57:53  profilanswer
 

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 !
 
 

mood
Publicité
Posté le 19-12-2006 à 16:57:53  profilanswer
 

n°1493730
0x90
Posté le 19-12-2006 à 19:22:12  profilanswer
 

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.
n°1493746
hchc
Posté le 19-12-2006 à 20:04:23  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

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

 

Sujets relatifs
debuggage fenetre Variablestaille ouverture fenêtre
Problème avec une partie de l'admin d'un site en phpEmpecher le redimmensionnement d'une fenetre
glut et fenetre popupButton qui s'efface si je passe une fenetre au dessus
fenêtre tkMessageBoxafficher des caracteres accentués dans une fenetre MS-DOS
[Flash] fscommand : Comment puis-je masquer une fenêtre MS-DOS?Agrandissement fenetre
Plus de sujets relatifs à : [C#] Screenshot d'une partie d'une fenêtre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR