乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 159|回复: 8

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

[复制链接]

1

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
8
发表于 2010-9-21 11:39:00 | 显示全部楼层 |阅读模式
我遇到这样的问题,我们单位的图大多数都是PL线,我的程序计算的时候只能用直线,所以需要在选择的时候高亮显示鼠标选择的那一段,例如:有PL线:A-B-C-D-E-F,我的鼠标点在C-D上,那么C-D就要高亮显示出来,以方便用户判断选择的那段线对不对,请问高手这个怎么解决?
回复

使用道具 举报

8

主题

138

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
170
发表于 2010-9-21 16:04:00 | 显示全部楼层
简单啊,首先建数组存放多段线各个顶点,然后判断位于哪条线上,用addline绘制一条一般直线设置属性为Highlight,完成程序之后删掉那条加的线段就行
回复

使用道具 举报

1

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
8
发表于 2010-9-21 16:32:00 | 显示全部楼层
兄台所言极是,但我所烦恼的就是如何确定鼠标点在哪段线上,有没有比较好的方法?我个人的理解就是,计算鼠标光标P(X0,Y0)位置到每段线两端点的距离之和S1,S2,S3,S4……取S最小的那段为被选中的线段,但是这种方法始终觉得不严谨。还请兄台不吝赐教!
回复

使用道具 举报

8

主题

138

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
170
发表于 2010-9-21 17:08:00 | 显示全部楼层
从头开始每两个点+你点的那个点一算,三点一线数学不是有个公式么,如果公式等于零那么三点是共线的,再判断点选的点是不是位于那两个顶点之间,就用Xi≤x≤Xi+1||Xi≥x≥Xi+1判断,要是位于两共线顶点之间,OK了确定了定点
回复

使用道具 举报

1

主题

4

帖子

1

银币

初来乍到

Rank: 1

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

使用道具 举报

8

主题

138

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
170
发表于 2010-9-21 23:13:00 | 显示全部楼层
那你可以在点选的时候改修系统境变量开启最近点捕捉不就完了么,至于你说的精度本来浮点的数据就不可能完全相等你设定一个相对能接受的就好了啊
回复

使用道具 举报

1

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
8
发表于 2010-9-27 15:41:00 | 显示全部楼层
就没有别的更好的方法了?
回复

使用道具 举报

21

主题

97

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
181
发表于 2012-3-15 10:25:00 | 显示全部楼层
可以用鼠标的坐标来计算你选的是哪一段线,然后再得到这段线...
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2012-3-15 18:02:00 | 显示全部楼层
那只亮显某一段,怎么操作?
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-30 10:27 , Processed in 0.698979 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表