J'ai travaill� sur un programme qui faisait �a � mes d�buts en java en 1996.
L'astuce �tait d'avoir les objets graphiques dans une liste cha�n�e tri�e par Z-order 
d�croissant (du premier plan � l'arri�re plan).
Lors d'un clic, pour s�lectionner le bon objet il fallait parcourir la liste du d�but 
� la fin et d�terminer pour chaque �l�ment s'il �tait sous la souris.


Patrice

-----Original Message-----
From: Aurelien Mazurie <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Date: Thu, 24 Oct 2002 11:17:04 +0200
Subject: Une vieille �nigme (pour moi en tout cas)


        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



-- S'il n'y a pas de solution, il n'y a pas de probl�me --

Répondre à