我遇到了一种情况,我需要在WPF上获得可视化元素的呈现大小。我的意思是,我需要获得视觉空间上的某些东西所消耗的空间,比如一个应用了Button
的DropShadowEffect
,而不仅仅是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
的内容与主窗口内容一致,我至少需要知道内容的大小和位置。
也许还有另外一种方法来实现这一点..。
发布于 2017-11-02 09:06:44
我可以找到的方法是使用VisualTreeHelper.GetEffect
方法,获取与可视化相关的效果,然后根据附加效果的类型进行一些手动计算。
https://stackoverflow.com/questions/47080354
复制