问题描述
|
我知道这似乎是一个完整的问题,但这里有:
我实际上是在Silverlight中创建了一个模拟作为编程练习。
我有一个半透明的画布,它位于40行30列的网格上。我可以将画布对象放入网格单元中以更改颜色,以表示水,草,沙或其他任何东西。
我将我的AI代理放置在画布上,以便它们可以在曲面上平滑移动,而不会像网格那样呈锯齿状移动。
我只是想知道是否有人在访问画布和网格之间的相对坐标方面有任何经验。我的网格单元是5x5,其中画布点显然是0到400之间的个位数。我只是想找到一种方法来收集画布上相对于其网格位置的所有Shape。
请随时提出其他问题,我知道这不是很清楚。
任何帮助将不胜感激。
解决方法
如果为代理提供RenderTransform,则仍可以使用网格。这样,它们仍然位于网格内并且可以自由移动。
,
我不确定这是否对您有帮助,但是最近我遇到了类似的情况(尽管只是非常相似)。
最后,我将
Grid.Row
和Grid.Column
设置为0
,并将setting3ѭ和Grid.ColumnSpan
设置为网格中的行数/列数。 (只需抓住ѭ5即可轻松进行动态处理。)
然后,如果要使其模仿画布,请设置HorizontalAlignment = Left
和VeritcalAlignment = Top
,然后更改Margin.Top
和Margin.Left
,而不是更改Canvas.Top
或Canvas.Left
。
对我来说就像梦一样。唯一缺少的是Canvas.ZIndex
属性。不幸的是,模拟起来有点麻烦,因为它涉及到更改ѭ13内的业务代表顺序。但是,当我遇到这样的问题时,我通常最终只会创建一个处理所有技术性内容的属性,这样我就可以像int
一样工作。
希望这会有所帮助,让我知道您是否使用过它,并且需要手写12英镑伪造者的手!