문제

대화식 WPF 그래프/트리 도구를 작업 중이며 캔버스에 노드와 링크가 있습니다. 노드는 Usercontrols이고 링크는 단순히 줄 모양이며 현재 링크는 노드의 중앙에서 다른 노드 중심으로 이동합니다.

노드가 약간 투명 해지기를 원할 때 문제가 발생하고 노드 뒤의 링크가 보입니다. 가장 편리한 솔루션은 클리핑 또는 불투명 마스크를 라인에 적용하는 것이기 때문에 노드 뒤에 그려지지 않지만 내 삶에 대해서는 방법을 알아낼 수 없습니까?

기본적으로 노드에서 경계 상자 형상을 알 수는 없습니다. 라인의 클리핑 지오메트리로 사용합니다. 물론 대체 솔루션에도 관심이 있습니다!

도움이 되었습니까?

해결책

VisualTreeHelper.getContentBounds () 메소드는 매번 비어있는 것 같습니다.

이 문제에 대한 대체 솔루션이 답변됩니다

앵커를 사용하지 않고 두 개의 WPF 캔버스 요소를 라인으로 연결합니까?

이로 인해 경계 상자를 사용하여 라인을/to로 끌어 당기는 교차점을 찾습니다.

다른 팁

솔루션을 지나치게 생각하는 것처럼 보일 것입니다. 중심에서 시작하는 대신 노드의 올바른 쪽에서 라인이 시작/종료되도록 링크의 논리를 변경하지 않겠습니까 ??? 이것을 달성하기 위해서는 조금 더 수학을해야합니다.

즉, 비주얼의 경계 상자를 얻으려면 사용할 수 있습니다. VisualTreeHelper :: getContentBounnds 도우미 방법.

우리는 비슷한 작업을 수행했으며 솔루션은 링크와 노드를 다른 레이어에 넣는 것이 었습니다.

따라서 노드가 노드에 의해 숨겨 지도록 링크 위에 노드와 링크의 팁이 나타나기를 원한다면, 노드 레이어가 링크 레이어 앞에 있도록 레이어의 zoRORD를 변경합니다.

레이어로서 우리는 VisualHosts를 사용했습니다 (VisualHost 클래스를 찾을 수 있습니다. 여기) 우리의 노드와 링크 객체는 DrawingVisuals였습니다.

잘 작동하며 노드의 경계를 찾는 것에 대해 번거롭지 않아도됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top