Question

Je travaille sur un outil graphique / arborescence WPF interactif et j'y place des nœuds et des liens dans un canevas. Les nœuds sont des contrôles utilisateur et les liens sont simplement des formes de lignes. Actuellement, les liens vont du centre d'un nœud au centre d'un autre nœud.

Le problème se pose lorsque je veux que les nœuds soient légèrement transparents et que l'on voie les liens derrière les nœuds. Je pensais que la solution la plus pratique serait d'appliquer un écrêtage ou un masque d'opacité sur les lignes, afin qu'elles ne soient pas dessinées derrière les nœuds, mais je ne peux pas, pour la vie, comprendre comment?

En gros, je ne parviens pas à déterminer la géométrie du cadre de sélection à partir des nœuds à utiliser comme géométrie de découpage pour les lignes. Je suis aussi intéressé par des solutions alternatives, bien sûr!

Était-ce utile?

La solution

La méthode VisualTreeHelper.GetContentBounds () semble renvoyer vide à chaque fois.

Une solution alternative à ce problème est traitée à

Connexion de deux WPF éléments de la toile par une ligne, sans utiliser d'ancres?

qui utilise des cadres de sélection pour rechercher les points d'intersection dans lesquels tracer les lignes.

Autres conseils

Il me semble que vous réfléchissez trop à la solution. Pourquoi ne pas simplement changer la logique des liens afin que les lignes commencent / finissent du bon côté du nœud au lieu de partir du centre ??? Pour ce faire, vous ne devriez avoir besoin que de faire un peu plus de calcul.

Cela dit, vous pouvez utiliser le pour obtenir le cadre de sélection d'un visuel. Méthode d'assistance VisualTreeHelper :: GetContentBounnds .

Nous avons travaillé sur quelque chose de similaire et notre solution consistait à placer des liens et des nœuds sur différentes couches.

Donc, si vous souhaitez que les nœuds apparaissent au-dessus des liens et que les extrémités des liens soient masquées par les nœuds, il vous suffit de modifier l'ordre z des couches afin que la couche de nœuds se trouve devant la couche de liens. .

En tant que couches, nous avons utilisé VisualHosts (vous avez trouvé une classe VisualHost ici ), nos objets noeud et lien étaient DrawingVisuals.

Fonctionne bien et vous n'avez pas à vous soucier de la recherche des limites de vos nœuds, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top