Page 1 sur 1
API GetObject
Publié : mer. 04/juil./2007 18:51
par nico
Salut,
Je me demande comment utiliser l'API GetObject pour connaitre la couleur d'un point à partir d'une position curseur x et y
GetObject_(ImageID(0), SizeOf(BITMAP), bmp.BITMAP)
Publié : mer. 04/juil./2007 19:08
par minirop
tu es sur que c'est "get object" ? parce que dans la msdn je ne trouve que ceci :.
http://msdn2.microsoft.com/en-us/library/aa392779.aspx
Publié : mer. 04/juil./2007 19:20
par nico
Publié : mer. 04/juil./2007 20:52
par nico
D'après mes résultats, ça donnerait ça:
Pour une image 32 bits, avec une image 24 bits il faudra utiliser un autre code
Code : Tout sélectionner
Structure RGBA
Red.c
Green.c
Blue.c
Alpha.c
EndStructure
GetCursorPos_(@point.POINT)
ScreenToClient_(Window,@point)
If point\x<bmp\bmWidth And point\x>=0
If point\y<bmp\bmHeight And point\y>=0
*bits.RGBA = bmp\bmBits
*bits=*bits+4*point\y*bmp\bmWidth
*bits=*bits+(point\x*4)
Debug *bits\Red
EndIf
EndIf
Publié : mar. 17/juil./2007 1:20
par nico
Le format png est étrange:
Si je charge une image png, alors les bits data vont du haut vers le bas et de gauche à droite ce qui n'est pas normal et le code posté au dessus correspond à ce cas là.
Maintenant si je fais un GrabImage, il vont du bas vers le haut et de gauche à droite, ce qui est normal je crois.
Dans ce cas pour retrouver le pixel par rapport à la position de la souris sur l'image, le calcul est le suivan, toujours pour une image au format 32 bitst:
Decalage=(((Hauteur-1-y)*Largeur)+x)*4
soit:*bits=*bits+(((bmp\bmHeight-1-point\y)*bmp\bmWidth)+point\x)*4