Bonjour
Encore un problème lié à la publication de mon projet (analyse d'images astronomiques).
J'ai un form dans lequel j'ai une picturebox qui me permet de visualiser une image. Sur cette image, lorsque je balade mon pointeur de souris, j'ai une indication en temps réel des composantes RVB du pixel sur lequel se situe le pointeur (voir copie d'écran).
Lorsque je clique sur une étoile ou très proche, j'ai une première phase d'analyse de la zone qui me permet de trouver précisément le centre de l'étoile. Au final, j'ai une courbe de luminosité de l'étoile qui se trace, avec une coupe horizontale (courbe jaune) et une coupe verticale (courbe verte).
J'utilise un bout de code récupéré sur le net et qui me permet de déterminer les valeurs RVB du pixel survolé. J'utilise également cette même fonction pour déterminer le centre de l'étoile et établir la courbe de luminosité de l'étoile pointée.
Voici le code que j'utilise :
Bref, dans mon projet, tout fonctionne parfaitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Int32, ByVal x As Int32, ByVal y As Int32) As Int32 Dim win, rgb, hdc As Int32 Dim g As Graphics = Graphics.FromHwnd(New IntPtr(win)) hdc = g.GetHdc.ToInt32 rgb = GetPixel(hdc, COORD_X, COORD_Y) PRed = rgb And &HFF PGreen = (rgb And &HFF00) / 256 PBlue = (rgb And &HFF0000) / 65536
Souhaitant utiliser ce programme sur d'autres ordinateurs, j'ai publié mon projet. Et là, patatra, la fonction ne marche pratiquement plus. En clair, j'ai essayé sur 4 autres ordinateurs et un seul fonctionne ! Sur tous les autres, la valeur de n'importe quel pixel est à &HFFFFFF et donc, tout le processus est un échec.
J'ai vérifié que la gdi32.dll est bien présente sur les ordinateurs de test.
J'ai passé des heures de recherche sur le ne, en vain.
Une bonne âme aurait-elle une solution pour mon problème ?
Merci à vous.
Partager