约翰乔 发表于 2010-9-21 11:39:00

如何高亮显示polyline中鼠标选择的那一段?

我遇到这样的问题,我们单位的图大多数都是PL线,我的程序计算的时候只能用直线,所以需要在选择的时候高亮显示鼠标选择的那一段,例如:有PL线:A-B-C-D-E-F,我的鼠标点在C-D上,那么C-D就要高亮显示出来,以方便用户判断选择的那段线对不对,请问高手这个怎么解决?

chmenf087 发表于 2010-9-21 16:04:00

简单啊,首先建数组存放多段线各个顶点,然后判断位于哪条线上,用addline绘制一条一般直线设置属性为Highlight,完成程序之后删掉那条加的线段就行

约翰乔 发表于 2010-9-21 16:32:00

chmenf087发表于2010-9-21 16:04:00static/image/common/back.gif简单啊,首先建数组存放多段线各个顶点,然后判断位于哪条线上,用addline绘制一条一般直线设置属性为Highlight,完成程序之后删掉那条加的线段就行


<p>兄台所言极是,但我所烦恼的就是如何确定鼠标点在哪段线上,有没有比较好的方法?我个人的理解就是,计算鼠标光标P(X0,Y0)位置到每段线两端点的距离之和S1,S2,S3,S4……取S最小的那段为被选中的线段,但是这种方法始终觉得不严谨。还请兄台不吝赐教!</p>

chmenf087 发表于 2010-9-21 17:08:00

从头开始每两个点+你点的那个点一算,三点一线数学不是有个公式么,如果公式等于零那么三点是共线的,再判断点选的点是不是位于那两个顶点之间,就用Xi≤x≤Xi+1||Xi≥x≥Xi+1判断,要是位于两共线顶点之间,OK了确定了定点

约翰乔 发表于 2010-9-21 17:49:00

兄台说的方法就是我上面说的那种方法,作为一款生产中使用的软件,首先,我不能强制要求用户非常精确的把鼠标点在线上面,只能取个阈值,即便精确的点在线上面了,按照CAD的精度取值等于0也是不科学的,所以我说是取最小值,而且因为用户较多,操作水平良莠不齐,选取的时候还可能有多种特殊情况出现,比如:选在端点上,或者PL线自身相交时出现的交点,这些都会造成误判。所以,我希望有更好更严谨的方法来提取选中的线段。兄台看有别的方法没呢,弟在线乞盼,呵呵!

chmenf087 发表于 2010-9-21 23:13:00

那你可以在点选的时候改修系统境变量开启最近点捕捉不就完了么,至于你说的精度本来浮点的数据就不可能完全相等你设定一个相对能接受的就好了啊

约翰乔 发表于 2010-9-27 15:41:00

<p>就没有别的更好的方法了?</p>

yxr_MJTD 发表于 2012-3-15 10:25:42

可以用鼠标的坐标来计算你选的是哪一段线,然后再得到这段线...

guohq 发表于 2012-3-15 18:02:26

那只亮显某一段,怎么操作?
页: [1]
查看完整版本: 如何高亮显示polyline中鼠标选择的那一段?