gpt4 book ai didi

c# - 如何在 WPF 中获取视觉对象的渲染大小?

转载 作者:太空宇宙 更新时间:2023-11-03 12:21:16 25 4
gpt4 key购买 nike

我有一种情况需要在 WPF 上获取视觉元素的呈现大小。我的意思是,我需要获得某些东西在视觉空间上占用的空间,例如 ButtonDropShadowEffect应用而不仅仅是 ActualWidth 的值和 ActualHeight属性。

例如,考虑以下场景:

<Button Width="100" Height="100">
<Button.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="0"/>
</Button.Effect>
</Button>

如您所见,按钮的大小为 100x100,但由于它有一个模糊半径为 10 的投影,因此需要 120x120 的渲染空间。

我如何在 WPF 中获得此按钮的呈现大小(120x120)?

StackOverflow 上已经有另一个类似的问题,但没有得到确切的答案。所以我问这个问题。


有关我要实现的目标的其他详细信息

我需要这个的情况如下:

我需要将自定义窗口的可视框架扩展到窗口边界之外。为了实现这一点,我在实际窗口的边界周围使用了 4 个其他相邻的窗口。在每个相邻窗口中,我显示一个 VisualBrush。显示将在窗口外显示的内容(如投影),就像在普通控件上一样。但是要知道应用于每个相邻窗口的确切大小并制作 VisualBrush的内容要与主窗口内容对齐显示,我至少需要知道内容的大小和位置。

可能,也许还有另一种方法可以实现这一点......

最佳答案

我能找到的方法是使用 VisualTreeHelper.GetEffect 方法,获取与视觉关联的效果,然后根据附加效果的类型进行一些手动计算。

https://msdn.microsoft.com/en-us/library/system.windows.media.visualtreehelper.geteffect(v=vs.110).aspx

关于c# - 如何在 WPF 中获取视觉对象的渲染大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47080354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com