내 문제의 단순화 된 버전에 대해 레이아웃 회전 (심지어 렌더 변환 된) 모양의 경계 상자를 계산하여 원형 주위에 사각형을 완벽하게 맞출 수 있습니다. 또는 규모가있을 수 있습니다. 당신이 이것을 해결할 수 있다면, 나는 행복 할 것이다.WPF 요소의 실제 시각적 경계 상자 가져 오기?
더 복잡한 문제는 모든 프레임 워크 요소의 시각적 경계 상자를 계산하는 것입니다. '시각적 경계 상자'는 프레임 워크 요소 내에서 가장 많이 보이는 픽셀이 최상위 경계를 결정하고 가장 오른쪽 픽셀이 오른쪽 경계를 결정한다는 것을 의미합니다. 해결할 수 있다면 더 행복해집니다. .
LayoutInformation.GetLayoutSlot()으로 재생 해봤지만 예상대로 작동하지 않았습니다. '레이아웃 슬롯'은 실제로 실제 경계보다 훨씬 큽니다. 또한 VisualTreeHelper.GetDescendantBounds()를 사용하여 시도했지만, VisualParent를 사용하여 보호 된 내 테스트 모양 때문에이 속성에 액세스 할 수 없어서 여기에 들어가기 전에이를 확인하기로 결정했습니다.
WPF에서 요소의 실제 시각적 경계 상자를 쉽게 얻을 수있는 방법을 제공하기를 바랍니다. 모든 변환 후에 계산됩니다. 내 질문에 명확하지 않은 부분이 있으면 알려 주시기 바랍니다.
내 셰이프에서'GetDescendantBounds()'를 할 때 셰이프의 변형이 있더라도 변환되지 않은 원래 셰이프의 경계 인 사각형을 반환합니다. 'GetParent()'를 사용하여 셰이프의 부모를 얻은 다음 해당 부모를 통해 Visual에 캐스팅하고 해당 Visual을 GetDescendantBounds()에 전달하면 내 셰이프보다 훨씬 큰 사각형이 반환됩니다. – Dalal