Bonjour � tous,
Je programme depuis maintenant pr�s de 10 ans mais il y une chose, utilis�e dans tous les OS ayant une GUI depuis la nuit des temps, que je ne sais toujours pas faire (enfin, disons que j'ai trouv� un moyen d�tourn� de le faire): c'est le fait de savoir quel objet affich� � l'�cran (objets qui peuvent se recouvrir, partiellement ou totalement) est sous le curseur de la souris (pour que, lorsque l'utilisateur clique, l'on sache � quel objet envoyer le message).
A l'�poque o� j'avais programm� un jeu utilisant ce genre de fonction j'avais r�solu le probl�me en cr�ant un �cran virtuel o�, d�s lors qu'un objet �tait affich� dans l'�cran r�el, il laissait une emprunte de pixel d'une couleur donn�e (ie. si une bo�te de dialogue �tait � afficher, je dessinai dans l'�cran virtuel un rectangle au m�me endroit, avec une couleur unique: par exemple la couleur 1 si c'�tait l'objet n�1). Ensuite, � chaque clic de souris il me suffisait de lire la couleur du pixel aux coordonn�es correspondantes dans l'�cran virtuel, et je connaissait l'ID de l'objet � modifier en cons�quence.

Ca marchait tr�s bien pour un �cran de petite taille (320x200, le bon vieux mode 13h...) et pour le nombre d'objets � g�rer (256 couleurs, donc 255 objets + noir), mais d�j� � l'�poque je me demandait comment faisait les OS comme Windows 3.1 pour faire la m�me chose.

Or j'ai aujourd'hui � faire quelque chose de similaire en Java: j'ai plusieurs objets � l'�cran (dessin�s dans un BufferedImage), qui peuvent se recouvrire mais que je veux pouvoir s�lectionner � la souris sans passer par une d�tection de "l'objet le plus proche par sa position par rapport � celle du curseur". En r�sum�, il faut que je r�solve cette tr�s vieille �nigme pour moi et apprenne comment font les OS de la plan�te pour r�gler ce probl�me...
J'ai trouv� une librairie �crite en Java qui fait ca, et qui sert � afficher des donn�es g�ographiques (dans les exemples on a ainsi une carte d'un pays, et la souris allume les diff�rentes r�gions lorsqu'elle passe dessus); mais les sources sont tellement grosses que je ne suis pas parvenu � trouver la m�thode utilis�e...

Quelqu'un sait-il comment on r�alise cet exploit quotidien ?

Aur�lien Mazurie

Répondre à