我不确定你是否打算关注MVVM,但无论哪种情况你都可以尝试这样做:
对于视觉部分,您可以使用
Canvas
,但任何其他小组可能会工作。 Canvas允许你使用
Canvas.Left
这样的东西,你所有的定位可能都是基于
System.Windows.Point
无论如何,价值,而不是相对定位。
剩下的事情可以用其中一个来绘制
System.Window.Shapes.Shape
子类。这两个酒吧可能
Rectangle
,对于梁将
Line
,对于传感器可能是一个
Ellipse
或者a
Rectangle
。
梁对象应该有
Visibility
绑定到ViewModel中的某个属性(如果不使用MVVM,则只是后面的代码)。该
Stroke
梁和梁的性质
Fill
传感器的属性也应该受到约束。
我不确定传感器尺寸会如何影响任何东西,可能意味着光束可能很宽?如果确实有影响,请绑定
Width
和
Height
同样。还记得绑定梁的
StrokeThickness
如果传感器尺寸很重要
对于该对象,您将使用
Rectangle
再次。再次,做必要的绑定。新的绑定将是
Canvas.Left
和
Canvas.Top
,以便你知道这个位置。
现在我们需要为对象设置动画。由于您通过绑定获得了位置,因此您可以更改source属性中的位置 - 绑定引擎将为您执行渲染更改。您可以使用计时器来移动对象。
现在我们需要找到碰撞。一种方法是计算它后面的代码,这将在每次对象位置改变时完成。还有另一种方法,因为您使用的是Canvas。读这个
所以发帖
。您需要做的就是转换底层证券
Geometry
对象和梁的实例(通过
myobject.RenderedGeometry.FillContainsWithDetail(beam)
)。
当然还有很多其他方法可以做到这一点。我只是希望我设法提供启动项目的方向。