我有一种情况需要在WPF上获取可视元素的渲染大小。我的意思是,我需要获得视觉空间上消耗的空间,例如应用了Button
的{{1}}而不仅仅是DropShadowEffect
和ActualWidth
属性的值
例如,请考虑以下情形:
ActualHeight
如您所见,该按钮的大小为100x100,但由于它具有模糊半径为10的投影,因此需要120x120的渲染空间。
如何在WPF中获得此按钮的渲染大小(120x120)?
StackOverflow上还有另一个类似的问题,但它没有得到确切的答案。所以我问这个问题。
我需要的情况如下:
我需要将自定义窗口的可视框架扩展到窗口的边界之外。为了达到这个目的,我在实际窗口的边界周围使用了4个其他相邻的窗口。在每个相邻窗口中,我显示一个<Button Width="100" Height="100">
<Button.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="0"/>
</Button.Effect>
</Button>
,显示将在窗口外显示的内容(如投影),就像在普通控件上一样。但是要知道要应用于每个相邻窗口的确切大小并使VisualBrush
的内容与主窗口内容对齐显示,我至少需要知道其大小和位置。内容。
也许还有另一种方法可以达到这个目的......
答案 0 :(得分:1)
我找到的方法是使用VisualTreeHelper.GetEffect
方法,获得与视觉效果相关的效果,然后根据附加效果的类型进行一些手动计算。