我有一个看起来像这样的 LED 面板。这是使用包含具有列和行的网格的画布对象构建的。该矩阵的每个字段都包含一个 LED 控件,其中包含一个椭圆。
现在我想在画布上画一条线。我想我可以做到这一点,但我怎样才能获得该线上的所有 LED 控件?
我有一个看起来像这样的 LED 面板。这是使用包含具有列和行的网格的画布对象构建的。该矩阵的每个字段都包含一个 LED 控件,其中包含一个椭圆。
现在我想在画布上画一条线。我想我可以做到这一点,但我怎样才能获得该线上的所有 LED 控件?
如果您绘制了System.Windows.Shapes.Line,则可以通过RenderedGeometry属性获取线条的几何图形,并将该几何图形用作几何命中测试的输入。
这样的命中测试将通过使用GeometryHitTestParameters参数调用VisualTreeHelper.HitTest来完成。HitTest 将为线的几何图形覆盖的每个椭圆调用您的HitTestResultCallback 。
我不完全确定几何命中测试是否适用于“空”几何,例如宽度为零的线。但是您可以尝试一下,以防它不起作用,例如使用倾斜的矩形几何而不是直线。或者,您可以通过使用Geometry.GetWidenedPathGeometry创建“加宽”几何体来模拟具有一定厚度的 Pen 的使用。