IScrollInfo
のMakeVisible
メンバーを実装しているときに、問題が発生しました。Visual
スクロールされているパネルを基準にしたその境界の座標を取得する必要があります。
これがの場合UIElement
、「TranslatePoint」メソッドを呼び出すだけなので簡単UIElement
ですが、のサブクラスでありVisual
、その逆ではないため、必ずしもそれを当てにすることはできません。
これを達成するにはどうすればよいでしょうか。
IScrollInfo
のMakeVisible
メンバーを実装しているときに、問題が発生しました。Visual
スクロールされているパネルを基準にしたその境界の座標を取得する必要があります。
これがの場合UIElement
、「TranslatePoint」メソッドを呼び出すだけなので簡単UIElement
ですが、のサブクラスでありVisual
、その逆ではないため、必ずしもそれを当てにすることはできません。
これを達成するにはどうすればよいでしょうか。
Visualは、点または長方形の変換に使用できるGeneralTransformを返すTransformToVisualメソッドを提供します。
var transform = visual1.TransformToVisual(visual2);
var point = transform.Transform(new Point(...));
がContainerVisualの場合visual1
、次のように実行できます。
var bounds = transform.TransformBounds(visual1.ContentBounds);
また
var bounds = transform.TransformBounds(visual1.DescendantBounds);