2011-03-10 3 views
0

TransformToAncestor를 호출 할 때 생성 된 GeneralTransform을 빌드하는 데 사용되는 행렬은 무엇입니까? 모두가 내가 보는 PDB에 단계가 같은 서명을 가진 TransformField 경우 : 결과 GeneralTransform에서 사용되는TransformToAncestor에서 UIElement.RenderTransform을 사용합니까?

private static readonly UncommonField<Transform> TransformField = new UncommonField<Transform>(); 

답변

2

아무것도 반사판을 친다. 특히 무료 인 동안)

코드는 털이 많지만 뒤따를 수 있습니다. 기본적으로 시각적 트리를 따라 가면서 변환을 그룹화하지만 전체가 훨씬 복잡해 지므로 그 깊숙한 부분을 파고 들지는 않습니다. 자세한 내용은 Visual.TrySimpleTransformToAncestor를 참조하십시오.

질문에 대답하기 위해 UIElement는 절대로 명시 적으로 사용되지 않습니다. Transform은 Effect (UncommonField 언급)를 통해 검색되므로 일반적으로 변형을 이펙트로 적용한다고 추측하므로 어디에서나이 바로 가기를 통해 가져올 수 있습니다.하지만 이는 인프라 및 구현 세부 사항입니다. 가장 가능성이 높습니다 :)

+0

어떻게이 "효과"에 액세스 하시겠습니까? – tillerstarr

+0

글쎄, 적어도 Visual에서는 VisualEffect 속성입니다. 그러나 대답의 중요한 부분은 내부 함수 Effect.CoerceToUnitSpaceGeneralTransform입니다. 변환을 반환하는 역할을 할 수 있다고 생각합니다. _after_ 모든 효과가 적용됩니다. 이후에는 아무 것도 알 수 없습니다. :) –

+0

더 깊은 것은 무엇이든 깊이 있습니다. WPF 내부 및 모든 코드를 복제하지 않는 한 외부 세계에 실제로 액세스 할 수 없습니다. 어쩌면 관심사가 왜 _ 특이한 이유가있을 때이 대화가 더 생산적 일 수 있습니까? :) –