Capturer une couleur

Fly57 Messages postés 29 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 15 avril 2005 - 18 janv. 2004 à 23:21
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 19 janv. 2004 à 18:40
Alors voila, je me suis mis en tête de faire un petit logiciel qui m'indique le code RV et Hexa d'une couleur (ça j'ai deja fait) mais aussi qu'il puisse capturer cette couleur en n'importe quel point de l'ecran
par exemple je clic sur mon bouton pour cette action, et la n'import ou ou je clic sur l'ecran, ça me renvoi la couleur rvb ou hexa du pixel cliqué sur l'ecran

je sais pas trop vers quoi me tourner, c'est en C# biensur et j'utilise SharpDevelop ... ptêtre avec openGL mais j'ai pas reussi à le faire fonctionner sous SharpDevelop, j'ai telechargé CsGL, mais ça prends pas

voila merci pour l'aide que vous pourrez me fournir :)

- Fly -

14 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 janv. 2004 à 00:54
G peut etre une piste
je dis bien piste pck je ne sais pas si C applicable
La classe Bitmap contient une methode GetPixel : "Obtient la couleur du pixel spécifié dans ce Bitmap."
Il "suffirait" de noter les coordonnées de la souris sur l'ecran tout en fesant une capture de tout l'ecran pour ensuite se servir de GetPixel afin de recup la couleur du pixel qui etait pointé en se servant de la capture.

Cette source de gg00xiv te donne un Image

Bitmap comporte un constructeur prenant comme parametre un Image

à toi de jouer

Cocoricoooooooo !!!!
0
Fly57 Messages postés 29 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 15 avril 2005
19 janv. 2004 à 09:54
Merci pour ta reponse
c'est nickel ce qu'il me fallait, bon ben j'ai presque finit le programe enfin il est fini mais le prob c'es tque je me sers de Direct X pour capturer les coordonnées de la souris, je les ais puis je me sers de GetPixel etc
mais SharpDevelop ne reconnait pas Direct X

j'ai mis ça en haut du prog :
using Microsoft.DirectX;
using Microsoft.DirectX.DirectInput;

et SharpDevelop me sors cette erreur :
"Le type ou le nom d'espace de noms 'DirectX' n'existe pas dans la classe ou l'espace de nom 'Microsoft'"
il me la met deux fois :/

donc la question est la suivante, comment puis-je faire pour me servir de direct X sous Sharp Develop, et que ça compile bien sur :)

Car je n'ai pas VS .Net

Merci d'avance :)

- Fly -
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 janv. 2004 à 09:59
cherche plutot du coté des api
il doit bien y avoir moyen de capturer ces fameuses coordonnées via l'api windows

Cocoricoooooooo !!!!
0
Fly57 Messages postés 29 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 15 avril 2005
19 janv. 2004 à 10:39
j'ai etait fouillé sur msdn et j'ai trouvé la fonction GetCursorPos()
j'ai donc fait comme suit :

public class CursorPointClass
{
[DllImport("coredll.dll")]
public static extern bool GetCursorPos(ref Point pt);
}

et je m'en sers ensuite comme ça :

Point pt = new Point(0, 0);
//le lien que tu m'as indiqué
Image capture = WindowsDesktop.CaptureScreen();
if(CursorPointClass.GetCursorPos(ref pt))
{
//j'ai aussi essayé sans convertir en Int16 ou meme en Int32
Color cc = capture.GetPixel(pt.x.ToInt16(), pt.y.ToInt16());
}

et la j'ai un paquet d'erreurs (6) :
-System.Drawing.Point.x est innaccessible en raison de son niveau de protection (CS0122)
-System.Drawing.Point.y est innaccessible en raison de son niveau de protection (CS0122)
-System.Drawing.Image ne contient pas de definition pour GetPixel (CS0117)
les 3 autres sont à causes de celles qui precedent

voila, pourtant j'ai l'impression de bien m'en servir :/

- Fly -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 janv. 2004 à 10:42
essaie un peu avec "out" a la place de "ref"

Cocoricoooooooo !!!!
0
Fly57 Messages postés 29 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 15 avril 2005
19 janv. 2004 à 10:47
c'est idem :(
les mêmes erreurs aux mêmes endroits

- Fly -
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 janv. 2004 à 10:57
bon G coder un truc vite fait (1 fenetre + un bouton ^^)

deja coredll.dll je sais pas d'ou tu le sors

dans la classe :

[DllImport("user32.dll")]
public static extern bool GetCursorPos(ref Point pt);


le code :

private void button1_Click(object sender, System.EventArgs e)
{
Point pt = new Point(0, 0);
GetCursorPos(ref pt);
MessageBox.Show(pt.X.ToString()+"/"+pt.Y.ToString());
}


ça marche niquel

Cocoricoooooooo !!!!
0
Fly57 Messages postés 29 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 15 avril 2005
19 janv. 2004 à 11:21
ok maintenant c'est bon pour la souris :)
merci pour ton aide ;)
il ne me reste plus qu'un probleme à regler :
-System.Drawing.Image ne contient pas de definition pour GetPixel (CS0117)

j'utilise un code que j'ai trouv ici pour faire la capture d'ecran que t'as montré au dessus, mon avis c'est que le code qui est donnée renvoie un Image (different d'un bitmap ?) alors que GetPixel() s'utilise sur un bitmap, c'est peut-être de là que viens l'erreur

je vais continuer à chercher :)

- Fly -
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 janv. 2004 à 11:26
par contre maintenant comme tu veux recup la couleur a n'importe quel point de l'ecran, il fo aussi que tu "intercepte" les clics en dehors de ta fenetre d'appli
je pense que là y'a pas d'autre solution que le hook :
Article sur CodeProject
Article MSDN

bon courage ^^

Cocoricoooooooo !!!!
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 janv. 2004 à 11:37
ben la classe Bitmap possede un constructeur prenant comme param un Image
donc il doit y avoir moyen de ce coté là

Cocoricoooooooo !!!!
0
Fly57 Messages postés 29 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 15 avril 2005
19 janv. 2004 à 12:11
C'est bon ça marche impecable !
Pour le hook, je sais pas trop, puisque si je clic sur le bouton pour capturer et que je met le curseur en dehors du prog ça prend quand même les coordonnées et j'obitnes bien la valeur

il faut juste que je mette un timer ou alors une fonction qui attend un clic de la souris pour prendre la couleur car sinon ça va trop vite :)

Voila
merci pour toute l'aide apporté :)

- Fly -
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 janv. 2004 à 12:38
pour le clic de souris ben si tu trouve un autre moyen pour l'intercepter en dehors de la zone de l'appli je suis client
pck G rien capter au hook ^^

Cocoricoooooooo !!!!
0
Fly57 Messages postés 29 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 15 avril 2005
19 janv. 2004 à 18:08
Bon voila mon appli marche impecable
je vais juste m'arranger pour charger un curseur plus fun pour quand on prend un couleur sur l'ecran, j'ai testé avec

Bitmap cur = new Bitmap("curseur.cur");
Cursor = new Cursor(cur.GetHicon());


mais ça ne prends pas :)
enfin ça fonctionne, ça compile et tout, mais quand je lance l'appli et que clic sur le bouton qui lance tout le tintouin, ben la j'ai une erreur parametre incorrect
mais bon je vais chercher, l'important c'est que l'appli soit fonctionnelle :)

sinon pour le hook je peux pas t'aider, tout ce que je peux te dire c'est que si je fait l'acquisition de la couleur et que je met mon curseur de souris n'importe ou sur l'ecran ça prend bien la bonne couleur, sans aucun probleme, donc apparemment y'a pas besoin de Hook, et ça tombe bien parceque j'avais rien capté non plus ^^

Voila ;)

Encore une fois merci pour toute l'aide que vous m'avez apporté !

- Fly -
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 janv. 2004 à 18:40
pour le curseur y'a une source qui a été postée y'a pas longtemps

Cocoricoooooooo !!!!
0
Rejoignez-nous