Couleur SetPixel différente de couleure GetPixel sous Windows 2000

Résolu
cushy007 Messages postés 19 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 1 mars 2005 - 25 févr. 2005 à 10:27
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 25 févr. 2005 à 14:57
Salut,



J'ai un problème sous Windows 2000 avec les couleurs des API SetPixel et GetPixel.

La couleur que me renvoie GetPixel est différente de celle que j'ai crée avec SetPixel alors que ça marche sous Win XP.



Serait-il possible que quelqu'un qui a Win 2000 essaye la routine suivante sur son poste ?



Private Sub Form_Load()



Dim i As Long

Dim j As Long

Dim lngColor As Long





For i = 1 To 100



lngColor = lngColor + 1

SetPixel Form1.hdc, i, 1, lngColor

If GetPixel(Form1.hdc, i, 1)
<> lngColor Then MsgBox lngColor & " " &
GetPixel(Form1.hdc, i, 1)



Next i





End Sub



Merci

12 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
25 févr. 2005 à 14:57
C'est pour cette raison que SetPixel te retourne la valeur de al couleur qu'il a réellement affecté au pixel, afin que tu puisses être sûr de la couleur du pixel, quel que soit la config graphique du poste ou s'execute ton code

Christophe R
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 févr. 2005 à 11:32
ajoutes ça avant: Form1.Show

Daniel
0
cushy007 Messages postés 19 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 1 mars 2005
25 févr. 2005 à 13:43
Merci mais ça ne change rien, d'ailleur, j'ai le problème aussi dans
une PictureBox et ce quel que soit l'instant auquel j'appelle les API.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 févr. 2005 à 13:46
ta Forme n'étant pas encore initialisée, c'est normal il n'y a pas encore les couleurs.
essayes de mettre ta procédure dans un bouton au lieu de le faire dans Form_Load.

Daniel
0

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

Posez votre question
cushy007 Messages postés 19 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 1 mars 2005
25 févr. 2005 à 14:03
Si, il y a des couleurs, mais elles ne correspondent pas. J'ai
quand même essayé avec un CommandButton mais rien y fait. Comme je l'ai
dit plus haut: j'ai le problème aussi dans
une PictureBox et ce quel que soit l'instant auquel j'appelle les API.


Ce n'est donc pas un problème d'initialisation de la Form.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 févr. 2005 à 14:13
vraiment une couleur différente ?
parce que si c'est -1 c'est que c'est une erreur: PictureBox non visible ou coordonnées en dehors.
sinon je vois pas la raison.

Daniel
0
cushy007 Messages postés 19 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 1 mars 2005
25 févr. 2005 à 14:24
Désolé pour les tailles des polices du message précédent.



Oui, il y a bien des couleurs:



pour des valeurs de couleurs en décimal:



SetPixel = 0 GetPixel retourne: 0

SetPixel = 1 GetPixel retourne: 0

...

SetPixel = 7 GetPixel retourne: 0

SetPixel = 8 GetPixel retourne: 8

SetPixel = 9 GetPixel retourne: 8

...

SetPixel = 15 GetPixel retourne: 8

SetPixel = 16 GetPixel retourne: 16

SetPixel = 17 GetPixel retourne: 16

...

SetPixel = 23 GetPixel retourne: 16

SetPixel = 24 GetPixel retourne: 24

SetPixel = 25 GetPixel retourne: 24



Ca parrait plutôt linéaire dans ces valeurs, mais pour des nombres plus élevés, getPixel retourne aussi des nombres impaires (33, 35 ...)
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 févr. 2005 à 14:31
excuses moi de te poser encore des questions, mais ça me semble bizarre.
donc si c'est pas -1 c'est bien une couleur.
je vois encore une chose possible.
est-ce que ça renvoie pas la couleur précédente, c'est à dire que SetPixels n'aurait pas d'effet. est-ce AutoRedraw est bien à True ?

Daniel
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
25 févr. 2005 à 14:40
Une piste !! Ton SetPixel se base sur une couleur dont les 3 composantes Rouge Vert et Bleu vont de 0 à 255, ce qui nous fait un peu plus de 16 millions de combinaisons possible, donc de couleurs possibles. Mais si ta config graphique n'est aps en 16 millions de couleurs (65 et des brouettes par exemple) Le setpixel, doit en fait donner au pixel la couleur la plus approchante possible en fonction de la palette de couleur que tu as configurer pour ta carte graphique. Le Getpixel, lui, te retourne la couleur du pixel réel ! Le défaut vient sans doute de la. Modifie ta config graphique dans le panneau de config windows et refait le test

Christophe R
0
cushy007 Messages postés 19 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 1 mars 2005
25 févr. 2005 à 14:42
Oui, j'y avais pensé, AutoRedraw est bien à true
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
25 févr. 2005 à 14:43
MSDN semble confirmer la piste que je viens de te donner en précisant pour al valeur de retour de Setpixel ceci :

If the function succeeds, the return value is the RGB value that the function sets the pixel to. This value may differ from the color specified by crColor; that happens when an exact match for the specified color cannot be found.

Christophe R
0
cushy007 Messages postés 19 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 1 mars 2005
25 févr. 2005 à 14:53
Ouf...



Merci à vous deux de votre aide. C'était bien la config graphique (je n'était qu'en 16 bits)
0
Rejoignez-nous