2012-12-14 4 views
0

최근 내 WPF 응용 프로그램에서 을 화면 전체에 드래그하여 구현하기 위해 TranslateTransform을 사용했습니다. 처음으로 화면의 다른 곳으로 드래그 한 후 컨트롤의 "제목 표시 줄"을 클릭하면 처음에 표시된 위치로 다시 이동한다는 새로운 버그가 있습니다. 그것은 여전히 ​​마우스를 따라갈 것이지만 초기 점프는 당황 스럽다.WPF에서의 변환은 어떻게 작동합니까?

나는 무슨 일이 일어나고 있는지 모르겠지만, 궁금해하게했습니다. Canvas에 WPF 컨트롤의 왼쪽 또는 위쪽 속성이 없기 때문에 WPF 컨트롤은 어쨌든 TranslateTransform으로 어떤 속성이 수정되고 있습니까?

+0

변형을 적용 할 코드를 추가하십시오. –

+0

특정 변형이 무엇인지에 관심이 없습니다. 나는 그들이 어떻게 일반적으로 일하는가에 관심이있다. –

답변

2

WPF의 레이아웃 및 렌더링 패스에는 변환에 대한 고유 한 지식이 있습니다. TranslateTransformXY 속성을 수정하면 연결된 FrameworkElement의 위치를 ​​지정할 때 레이아웃/렌더링 단계에서 새로운 값을 고려하게됩니다.

그것을 다른 방법을 넣어하려면 : TranslateTransform 다른 속성을 수정하지 않고, 속성을 수정하여 다른 레이아웃/패스 렌더링 트리거링 및 따라서 관련 FrameworkElement의 화면 위치에 영향을 미치는된다.

자세한 내용은 here을 참조하십시오.

+0

그래서 내부적으로 어딘가에 변환에 의해 영향을받는 일종의 좌표가 있어야하지만 프로그래머에게는 보이지 않습니다. 감사. –

+0

WPF의 레이아웃 시스템은 각 'FrameworkElement'에 대한 좌표를 효과적으로 계산합니다. [this] (http://msdn.microsoft.com/en-us/library/ms745058.aspx)도 읽을 수 있습니다. –