2012-12-20 42 views
0

在實施IScrollInfoMakeVisible成員,我遇到了一個問題。我需要獲取相對於正在滾動的面板的邊界的座標。如何獲得視覺相對於其他視覺座標系的邊界?

現在,如果這是一個UIElement,這將是容易,因爲我就叫它「TranslatePoint將」方法,但UIElementVisual,而不是周圍的其他方式的子類,這樣我就可以不必對數。

一個如何去實現這一目標?

回答

1

視覺提供了TransformToVisual方法,它返回一個可以用來轉換點或矩形組成的GeneralTransform

var transform = visual1.TransformToVisual(visual2); 
var point = transform.Transform(new Point(...)); 

如果visual1是ContainerVisual,你可以這樣做:

var bounds = transform.TransformBounds(visual1.ContentBounds); 

var bounds = transform.TransformBounds(visual1.DescendantBounds); 
+0

完美!正是我在找什麼。謝謝!我直接使用傳遞給IScrollInfo.MakeVisible調用的矩形的TransformBounds,而且效果很好! – MarqueIV