获取ViewBox中项目的大小(在“拉伸”之后)

问题描述 投票:10回答:1

考虑以下:

假设Window是1024x768并且ViewBox填充整个窗口,这意味着TextBox在屏幕上非常大。

我想获得当前在屏幕上的TextBox的大小。如果我得到DesiredSize或ActualSize甚至是RenderedSize,我总是得到100。

有什么建议?

更新:我可能得到ViewBox的ActualWidth并将它除以它的孩子的ActualWidth,它会给我当前的比例因子并以某种方式将其作为属性公开,但我不确定这是最好的方法。

wpf size viewbox actualwidth
1个回答
19
投票

这就是你如何得到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))
© www.soinside.com 2019 - 2024. All rights reserved.