【发布时间】:2011-11-18 06:05:12
【问题描述】:
在考虑透明度的情况下,我需要确定与其他控件重叠的 WPF 控件的可见区域。
考虑以下场景:
画布上的三个控件。蓝色和绿色与第三个重叠。绿色的有一个透明的矩形区域。是否有可能有问题地获得由红色矩形标记的可见区域 1、2、3?
类似的东西(以下 API 不存在):
Geometry[] visibleAreas = VisualTreeHelper.GetVisibleGeometry(controlInTheBack);
提前感谢您的任何建议。
更新:
我尝试使用 DrawingGroup drawingGroup = VisualTreeHelper.GetDrawing(visual) 来获取每个控件的几何图形。
然后在重叠控件上使用CombinedGeometry with GeometryCombineMode="Union" 得到重叠区域。
然后在后面控件的几何与并集结果之间使用CombinedGeometry和GeometryCombineMode="Exclude"得到可见区域。
问题在于 VisualTreeHelper.GetDrawing(control) 返回 null。
【问题讨论】: