11

次のことを考慮してください。

ウィンドウが1024x768で、ViewBoxがウィンドウ全体に表示されているとしましょう。これは、TextBoxが画面上で非常に大きいことを意味します。

現在画面に表示されているTextBoxのサイズを取得したいと思います。DesiredSizeまたはActualSize、さらにはRenderedSizeを取得すると、常に100が取得されます。

助言がありますか?

更新:おそらくActualWidthViewBoxを取得し、そのActualWidth子で除算して、現在の倍率を取得し、それをプロパティとして公開することができますが、それが最善の方法かどうかはわかりません。

4

1 に答える 1

21

これは、その子に及ぼす影響を取得する方法ScaleTransformですViewBox

var child = VisualTreeHelper.GetChild(viewBox, 0) as ContainerVisual;
var scale = child.Transform as ScaleTransform;

viewBoxテキストボックスが収まるViewBoxは次のとおりです。次に、乗算するだけでscale.ScaleX * textBox.ActualWidth、画面座標でサイズを取得できます

しかし、それはさらに簡単になります!そのテキストボックスのサイズを画面座標で直接取得するには、次のようにします。

textbox.PointToScreen(new Point(textbox.ActualWidth,textbox.ActualHeight)) - textbox.PointToScreen(new Point(0,0))
于 2011-03-20T20:50:40.467 に答える