WPF 获取与行冲突的控件

本文关键字:控件 冲突 获取 WPF | 更新日期: 2023-09-27 18:33:51

我有一个看起来像这样的led面板。这是使用画布对象构建的,该对象包含一个带有列和行的网格。该矩阵的每个字段都包含一个包含椭圆的 LED 控件。

现在我想在画布上画一条线。我想我能够做到这一点,但是我怎样才能获得该线上的所有LED控件?

WPF 获取与行冲突的控件

假设您绘制了一个 System.Windows.Shapes.Line,则可以通过 RenderedGeometry 属性获取线条的几何图形,并将该几何图形用作几何命中测试的输入。

这样的命中测试将通过调用 VisualTreeHelper.HitTest 并使用 GeometryHitTestParameters 参数来完成。HitTest 会为直线几何图形覆盖的每个椭圆调用 HitTestResultCallback。

我不完全确定几何命中测试是否适用于"空"几何图形,例如宽度为零的线。但是您可以尝试一下,如果它不起作用,例如使用倾斜的矩形几何形状而不是直线。或者,您可以通过使用 Geometry.GetWidenedPathGeometry 创建"加宽"几何图形来模拟使用具有一定厚度的笔。