Penso di trovarmi di fronte a un problema piuttosto comune, ma non ricordo quale sia la soluzione più adatta.
Mettiamola così: posso, in una determinata, determinata lingua, ottenere alcuni eventi ogni volta che l'utente muove il mouse. Pertanto ottengo la posizione dell'attuale posizione del cursore in un sistema basato su coordinate assolute.
Considerando ora che questo sistema è anche in grado di contenere fino a migliaia di migliaia di oggetti di forma (con un certo punto e dimensione di posizione). In una prima approssimativa approssimazione, possiamo considerarli come i relativi riquadri di delimitazione al fine di rendere l'operazione di ricerca e la classificazione un po 'più semplici, aggiungiamo anche un'altra semplificazione omettendo il fatto che le forme possono sovrapporsi l'una con l'altra.
Quali possono essere le migliori strutture dati per recuperare le forme sotto la posizione del cursore e consentire le relative operazioni di inserimento / cancellazione / modifica veloci?
Grazie,
ps: stavo pensando ad una sorta di alberi ordinati ma penso che siano piuttosto impegnativi quando si tratta di mantenere il loro ordinamento interno.
Una curiosità aggiuntiva: come funziona in Winforms? Voglio dire che la classe Control in .NET Framework è correlata all'HWANDLE sottostante in Windows e in grado di generare eventi quando il cursore sta entrando o esce da un Control. Non penso davvero che ci sia un thread assegnato per eseguire alcuni hit test fittizi ... e attivare gli eventi correlati.