pano1974
21-10-2011, 16:48
Ciao a tutti,
sto facendo un programma dove devo spostare, selezionare, cancellare ecc. ecc... degli oggetti.
Una funzionalità che mi sarebbe comoda sarebbe tipo l' osnap di autocad, cioè quando mi avvicino con il mouse ad un vertice o ad un altro oggetto disegnato sulla mia canvas (o graphics) questo viene evidenziato da un quadrato o faccia cambiare il colore all'oggetto.
io lo ho già implementato nel mio sw attraverso l'evento mousemove della mia canvas contenete gli oggetti disegnati, e quindi ogni volta che si scatena l'evento scorro la lista degli oggetti disegnati verificando se il mouse si trova in un intorno di un punto dell'oggetto.
Questa soluzione funziona ma vedo da taskmanager che l'utilizzo di memoria diventa elevato, infatti da 40MB che occupa il programma arrivo a 170MB quando il mouse si muove sopra la canvas.
E se gli oggetti disegnati diventano tantissimi? ho paura che il programma rallenterà molto.
Voi come risolvereste questo problema?
Se avete documentazione o link a pagine che spiegano come si costruisce ( o meglio gli algoritmi) un sw di grafica vettoriale in GDI+ ve ne sarei grato.
sto facendo un programma dove devo spostare, selezionare, cancellare ecc. ecc... degli oggetti.
Una funzionalità che mi sarebbe comoda sarebbe tipo l' osnap di autocad, cioè quando mi avvicino con il mouse ad un vertice o ad un altro oggetto disegnato sulla mia canvas (o graphics) questo viene evidenziato da un quadrato o faccia cambiare il colore all'oggetto.
io lo ho già implementato nel mio sw attraverso l'evento mousemove della mia canvas contenete gli oggetti disegnati, e quindi ogni volta che si scatena l'evento scorro la lista degli oggetti disegnati verificando se il mouse si trova in un intorno di un punto dell'oggetto.
Questa soluzione funziona ma vedo da taskmanager che l'utilizzo di memoria diventa elevato, infatti da 40MB che occupa il programma arrivo a 170MB quando il mouse si muove sopra la canvas.
E se gli oggetti disegnati diventano tantissimi? ho paura che il programma rallenterà molto.
Voi come risolvereste questo problema?
Se avete documentazione o link a pagine che spiegano come si costruisce ( o meglio gli algoritmi) un sw di grafica vettoriale in GDI+ ve ne sarei grato.