Domanda

Sto lavorando a uno strumento grafico / albero WPF interattivo e ho nodi e collegamenti posizionati in un'area di disegno. I nodi sono controlli utente e i collegamenti sono semplicemente forme di linea e attualmente i collegamenti vanno dal centro di un nodo al centro di un altro nodo.

Il problema sorge quando voglio che i nodi siano leggermente trasparenti e si vedano i collegamenti dietro i nodi. Ho pensato che la soluzione più conveniente sarebbe quella di applicare il ritaglio o la maschera di opacità alle linee, quindi non sono disegnate dietro i nodi, ma non riesco a capire come?

Fondamentalmente non riesco a capire una geometria del riquadro di delimitazione dai nodi da utilizzare come geometria di ritaglio per le linee. Sono anche interessato a soluzioni alternative, ovviamente!

È stato utile?

Soluzione

Il metodo VisualTreeHelper.GetContentBounds () sembra restituire Vuoto ogni volta.

Una soluzione alternativa a questo problema è risolta in

Collegamento di due WPF tela elementi da una linea, senza usare ancore?

che utilizza i riquadri di delimitazione per trovare punti di intersezione per tracciare le linee da / a.

Altri suggerimenti

Mi sembra che stai pensando troppo alla soluzione. Perché non cambiare semplicemente la logica dei collegamenti in modo che le linee inizino / finiscano dal lato corretto del nodo invece di iniziare dal centro ??? Dovresti solo fare un po 'più di matematica per raggiungere questo obiettivo.

Detto questo, per ottenere il riquadro di delimitazione di un oggetto visivo è possibile utilizzare VisualTreeHelper :: GetContentBounnds metodo helper.

Abbiamo lavorato su qualcosa di simile e la nostra soluzione era quella di mettere collegamenti e nodi su livelli diversi.

Quindi, se vuoi che i nodi appaiano sopra i collegamenti e le punte dei collegamenti siano nascoste dai nodi, devi solo cambiare l'ordine z dei livelli in modo che il livello dei nodi sia davanti al livello dei collegamenti .

Come livelli abbiamo usato VisualHosts (trovi una classe VisualHost qui ) un nostro nodo e gli oggetti link erano DrawingVisuals.

Funziona bene e non devi preoccuparti di trovare i bordi dei tuoi nodi ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top