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

发布于 2024-08-19 01:29:25 字数 340 浏览 12 评论 0原文

考虑以下几点:

假设窗口大小为 1024x768,ViewBox 填充整个窗口, 这意味着文本框在屏幕上非常大。

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

有什么建议吗?

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

Consider the following:

Let's say the Window is 1024x768 and the ViewBox fills the entire window,
this means the TextBox is really large on the screen.

I want to get the size of the TextBox as it is currently on the screen.
If I get DesiredSize or ActualSize or even RenderedSize I always get 100.

Any suggestions?

Update: I could probably get the ActualWidth of the ViewBox and divide it by the ActualWidth of it's child which would give me the current scale factor and expose that as a property somehow but I'm not sure that's the best way to do it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

秋叶绚丽 2024-08-26 01:29:25

这就是获取 ViewBox 对其子项施加的 ScaleTransform 的方法:

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))

This is how you get the ScaleTransform the ViewBox exerts on its children:

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

Here viewBox is the ViewBox that textbox sits in.
Then you can just multiply scale.ScaleX * textBox.ActualWidth and you get the size in Screen coordinates

But it gets even easier! To get that textbox's size directly in Screen Coordinates you do:

textbox.PointToScreen(new Point(textbox.ActualWidth,textbox.ActualHeight)) - textbox.PointToScreen(new Point(0,0))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文