我需要确定在考虑透明度的情况下,WPF控件被其他控件重叠时的可见区域/区域。
考虑以下场景:
画布上有三个控件。蓝色和绿色控件重叠第三个控件。绿色控件具有透明矩形区域。是否可能以编程方式获取由红色矩形标记的可见区域1、2、3?
类似于(以下API不存在):
感谢您的建议。
更新:
我尝试使用DrawingGroup drawingGroup = VisualTreeHelper.GetDrawing(visual)来获取每个控件的几何形状。
然后在重叠的控件上使用CombinedGeometry和GeometryCombineMode="Union"来获取重叠区域。
然后在后面的控件的几何形状和联合结果之间使用CombinedGeometry和GeometryCombineMode="Exclude"来获取可见区域。
问题是VisualTreeHelper.GetDrawing(control)返回null。
考虑以下场景:
![enter image description here](https://istack.dev59.com/hJj9R.gif)
类似于(以下API不存在):
Geometry[] visibleAreas = VisualTreeHelper.GetVisibleGeometry(controlInTheBack);
感谢您的建议。
更新:
我尝试使用DrawingGroup drawingGroup = VisualTreeHelper.GetDrawing(visual)来获取每个控件的几何形状。
然后在重叠的控件上使用CombinedGeometry和GeometryCombineMode="Union"来获取重叠区域。
然后在后面的控件的几何形状和联合结果之间使用CombinedGeometry和GeometryCombineMode="Exclude"来获取可见区域。
问题是VisualTreeHelper.GetDrawing(control)返回null。