Pergunta

Eu estou trabalhando em uma ferramenta interativa do gráfico WPF / árvore e ter nós e ligações entre eles colocado em uma tela. Os nós são usercontrols e as ligações são simplesmente formas de linha, e atualmente as ligações ir do centro de um nó para o centro de outro nó.

O problema surge quando eu quero os nós para ser ligeiramente transparente e vê-se as ligações por trás dos nós. Imaginei que a solução mais conveniente seria aplicar recorte ou OpacityMask às linhas, para que eles não são atraídos por trás dos nós, mas eu não posso para a vida de me descobrir como?

Basicamente eu não posso descobrir uma geometria caixa delimitadora dos nós para usar como uma geometria de recorte para as linhas. Eu também estou interessado em soluções alternativas, é claro!

Foi útil?

Solução

Os VisualTreeHelper.GetContentBounds () método parece retornar toda vez vazio.

Uma solução alternativa para este problema é respondida em

conectando dois WPF elementos de lona por uma linha, sem o uso de âncoras?

que usos delimitadora caixas para encontrar pontos de interseção para desenhar as linhas de / para.

Outras dicas

Parece-me como se estivesse pensando demais a solução. Porque não basta mudar a lógica para as ligações de modo a que as linhas começam / terminam no lado correto do nó em vez da partir do centro ??? Você só precisa fazer um pouco mais de matemática para alcançar este objetivo.

Dito isso, para obter a caixa delimitadora de um Visual você pode usar o VisualTreeHelper :: GetContentBounnds ajudante método.

Nós trabalhamos em algo semelhante e nossa solução foi a de colocar links e nós em camadas diferentes.

Então, se você quer os nós para aparecer acima dos links e as pontas dos links para ser escondidos pelos nós, você apenas muda a ordem z das camadas de modo que a camada de nós está na frente dos links-layer .

Como camadas usamos VisualHosts (você encontrar uma classe VisualHost aqui ) um nossas nó e link objetos foram DrawingVisuals.

funciona bem e você não precisa problemas em encontrar as fronteiras de seu nós etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top