Getpixel pour une image plus grande qu'un picturebox
rusty347
Messages postés8Date d'inscriptionsamedi 23 octobre 2004StatutMembreDernière intervention10 mai 2006
-
10 mai 2006 à 11:46
rusty347
Messages postés8Date d'inscriptionsamedi 23 octobre 2004StatutMembreDernière intervention10 mai 2006
-
10 mai 2006 à 15:42
Bonjour a tous.
Voila ,j'ai un petit soucis qui devrai pouvoir ce resoudre par une astuce que je ne trouve pas.
Je m'explique , une partie de mon code permet de manipuler un image dans un picture box . J'ai deja implemanté pas mal de fonctions qui marchent parfaitement .
Sachant que l'image est plus grande que le picturebox , je peux dors et deja bouger l'image par pointer/glisser , centrer l'image sur un pixel double cliqué etc.
Je voudrai a present recuperer la couleur d'un pixel de l'image (qui n'est pas forcement ds la picturebox , puisque l'image est plus grande ) .
En fait il sagit d'une bete detection de couleur!
J'utilise Get/SetPixel et j'arrive a l'utiliser, seul probleme il ne gere que les pixels presents dans la picturebox et etant donné que mon image peu bouger ,je ne peux pas "superposer" (mettre au meme endroit)un pixel fixe (picturebox) et un pixel bougeable (imagebox) !
Par consequeant au lieu d'avoir une valeur fixe de couleur, jai une valeur qui varie en fonction du deplacement de mon image, ce qui est tout a fait logique du point de vue fonction .
J'ai bien pensé a balayer l'image complete et faire une comparaison de couleur mais comme elle est plus grande que le picturebox je n'en ai qu'une petite partie.
Idem pour la fonction picture.point qui ne gere que les picturebox.
Connaitriez vous un moyen (astucieux ou classique) de regler ce soucis?
Voila :) , pas evident de definir un probleme pareil quand on est plongé dans son trip, j'espere avoir été clair!
Merci d'avance
Flo
A voir également:
Getpixel pour une image plus grande qu'un picturebox
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 10 mai 2006 à 13:10
n'utilises pas GetPixel (voire pas un pictureBox ^^)
récupères les bits de ton image dans un tableau (en utilisant GetDibBits, par exemple),
gain de performance et pas de soucis avec ta grande image.... que demander de plus ?
cs_Warning
Messages postés516Date d'inscriptionsamedi 3 février 2001StatutMembreDernière intervention24 octobre 20062 10 mai 2006 à 14:05
Ben deja je te conseil de dessiner directement l'image déplaçeable dans la picturebox plutot que d'utiliser un image'box' dans un picturebox.. Ainsi tu pourra utiliser l'instruction point à l'exterieur de ta picturebox.
Pour dessiner l'image dans la picturebox utilise picturbox1.PaintPicture (...)
@++
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 10 mai 2006 à 15:04
un contrôle Image dans un contrôle PictureBox !
j'avais même pas compirs ça comme ça :o
faut vraiment que je me repose, je crois ^^
faut dire.... j'imaginais pas la gestion de la chose ainsi :
on perd tout "avantage" des fonctions de dessin du picturebox ^^
bien que d'accord avec le remaniement architectural proposé par Warning, je vais tout de même proposer une solution permettant d'exploiter GetPixel, dans l'êtat actuel des choses :
Crée un DC (CreateCompatibleDC)
associe tim Image1.Handle à ce DC (SelectObject)
ensuite, manipule te pixels librement (Get/SetPixel) via ton DC
replace le hBmp d'origine dans ton DC
fais un brin de ménage (DeleteDC)
et voilà
Renfield
Admin CodeS-SourceS - MVP Visual Basic
Vous n’avez pas trouvé la réponse que vous recherchez ?
rusty347
Messages postés8Date d'inscriptionsamedi 23 octobre 2004StatutMembreDernière intervention10 mai 2006 10 mai 2006 à 15:42
Comme vous l'avez compris , je ne suis pas expert , disons que je sais a peu pres programmer et que j'arrive a mes fins souvent par des moyens detournés (pas forcement les plus propres et les plus rapides).
En ce qui concerne ma gestion de l'image dans la picture box , je me suis inspiré de nombreux codes de ce site , j'ai donc pensé que c'etait une bonne maniere de faire (Imagebox dans Picturebox , apparament je me suis trompé)!
Ceci dit meme si ce n'est pas tres orthodoxe , cela marche plutot bien ^^.
Mon image fait tout de meme 15000*9000 (120Mo) ^^
Je vais donc dans un premier temps essayer vos deux propositions , et si cela ne marche pas , je n'aurai qu'a revoir la totalité de mon code (sniiiiiiiiiifff etant donné que les 3/4 des nombreuses fonctions de mon prog dependent de ce systeme de deplacement,imagebox ds picturebox)
Allez je retourne bosser et encore merci pour vos propositions