首页 新闻 会员 周边

silverlight如何判断一个Point在某个Polygon区域内

1
悬赏园豆:30 [已关闭问题]

一个Canvas上覆盖了多个Polygon,我在Canvas上用鼠标拖动一个小球,如何判断这个小球在拖动的过程中进入不同的Polygon。

PS:小球和Polygon都是Canvas的子对象

Antony Yang的主页 Antony Yang | 初学一级 | 园豆:150
提问于:2010-08-03 17:14
< >
分享
其他回答(2)
0

如果不是很严格的判断:当鼠标拖动过程中,鼠标进入区域是才算进入。

则可以反转过来,只要判断鼠标是不是进入区域[每个区域的鼠标事件],同时鼠标是不是处理拖动状态,就可实现了。

 

如果很严格要用到多边型边界碰到才算进入,那个算法应该是相当的麻烦;

那就稍为不严格一点好了,将取多边型的四个角的点,型成一个大的矩型,这样判断矩形就好判断了,然后再修补下误差。

路过秋天 | 园豆:4787 (老鸟四级) | 2010-08-03 17:41
这种方法我尝试过,在每一个Polygon上添加MouseEnter事件。但是当我Drag小球的时候,不能触发MouseEnter事件。小球和Polygon都是Canvas的子对象。
支持(0) 反对(0) Antony Yang | 园豆:150 (初学一级) | 2010-08-03 17:49
@David Yang: 按你这么说,你现在问题应该问的是“一个小于被拖动时,其它的polygon,MouseEnter事件无效问题“.请首先确认,没拖动之前MouseEnter是否能触发。如果不能,把polygon都换成Cavans看能不能触发,如果能,在polygon外套一层Cavans通过Cavans触发事件。
支持(0) 反对(0) 路过秋天 | 园豆:4787 (老鸟四级) | 2010-08-03 19:10
@路过秋天: 没拖动小球,只是单纯的移动鼠标,能够触发MouseEnter事件,这个我之前试验过。现在的难点是如何在鼠标拖动小球的过程中也能触发Polygon的鼠标事件。
支持(0) 反对(0) Antony Yang | 园豆:150 (初学一级) | 2010-08-04 08:54
0

可以计算polygon覆盖区域,再与鼠标坐标进行比较

如果没有更好的办法,不妨这么做

LARSON _ | 园豆:136 (初学一级) | 2010-08-03 18:14
是啊,这个办法我也想过,但是核心问题是如何计算鼠标坐标是否在polygon覆盖区域内。
支持(0) 反对(0) Antony Yang | 园豆:150 (初学一级) | 2010-08-04 08:56
polygon的canvas.leftpropety和canvas.toppropety可以取得,再加上它的宽和高不就可以得到它的坐标区域了吗,鼠标相对于canvas的坐标是很容易取得的,一比较就出来了
支持(0) 反对(0) LARSON _ | 园豆:136 (初学一级) | 2010-08-04 08:58
@lensso:如果polygon是规则的,自然很容易比较,关键我的这些polygon都是完全不规则的,多边形。有更好的办法吗?
支持(0) 反对(0) Antony Yang | 园豆:150 (初学一级) | 2010-08-04 09:03
0

我来个笨一点的。 先确定小球是从哪个方向来的,再判断圆心到polygon中心的距离。

找自己丶 | 园豆:28 (初学一级) | 2013-10-14 14:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册