API GetObject

Sujets variés concernant le développement en PureBasic
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

API GetObject

Message 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)
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message 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
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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 
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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
Répondre