如何在WPF中获取可视化的渲染大小?

时间:2017-11-02 16:37:41

标签: c# .net wpf xaml

我有一种情况需要在WPF上获取可视元素的渲染大小。我的意思是,我需要获得视觉空间上消耗的空间,例如应用了Button的{​​{1}}而不仅仅是DropShadowEffectActualWidth属性的值

例如,请考虑以下情形:

ActualHeight

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

如何在WPF中获得此按钮的渲染大小(120x120)?

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

关于我试图实现的其他细节

我需要的情况如下:

我需要将自定义窗口的可视框架扩展到窗口的边界之外。为了达到这个目的,我在实际窗口的边界周围使用了4个其他相邻的窗口。在每个相邻窗口中,我显示一个<Button Width="100" Height="100"> <Button.Effect> <DropShadowEffect BlurRadius="10" ShadowDepth="0"/> </Button.Effect> </Button> ,显示将在窗口外显示的内容(如投影),就像在普通控件上一样。但是要知道要应用于每个相邻窗口的确切大小并使VisualBrush的内容与主窗口内容对齐显示,我至少需要知道其大小和位置。内容。

也许还有另一种方法可以达到这个目的......

1 个答案:

答案 0 :(得分:1)

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

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