unsigned short Test(short x,short y,BITMAP *sprt)
{
return (sprt->Data[(((sprt->NumCols>>3)+((sprt->NumCols & 7)?1:0))*y)+(x>>3)] & (1<<(7-(x & 7))));
}
Voici ma méthode :
1. je trouve l'octet qui contient la coordonnée qui nous intéresse :
sprt->Data[(((sprt->NumCols>>3)+((sprt->NumCols & 7)?1:0))*y)+(x>>3)]
-> à partir du début du tableau, je multiplie la coordonnée Y par le nombre d'octets formant une colonne :
(((sprt->NumCols>>3)+((sprt->NumCols & 7)?1:0))*y)
-> puis j'avance encore du nombre d'octets suffisant pour arriver à l'octet qui nous intéresse :
+(x>>3)
2. je fais un & logique entre cet octet et un octet rempli de 0 et qui ne contient qu'un 1 à l'endroit de la coordonnée x :
& (1<<(7-(x & 7)))
Voilà, c'est pas très détaillé, mais bon...
Donc si vous avec une meilleure méthode, n'hésitez pas à proposer...