在矢量图中,如何做捕捉交点,端点的功能 ( 积分: 50 )

  • 主题发起人 主题发起人 CADVector
  • 开始时间 开始时间
C

CADVector

Unregistered / Unconfirmed
GUEST, unregistred user!
我想开发一个矢量图系统,想问一下,在矢量图中,如何做捕捉交点,端点的功能
 
我想开发一个矢量图系统,想问一下,在矢量图中,如何做捕捉交点,端点的功能
 
高手请回答啊
 
请问哪个GRID 可以显示对象的,比如在单元格中显示一个PANEL对象
 
难道没人能回答吗
 
其实通常都是自己写代码判断的,就是说你保存了所有这些数据的节点信息(一般是自定义坐标),然后当鼠标移动过去的时候就判断当前鼠标的位置,遍历节点,判断鼠标当前位置和节点是否距离很小,到达一定阀值,那么就认为鼠标在那条线上,然后再调用另外的方法,画一个框框等,那么看起来这条先就被选中了,其实并不是想像中在Delphi窗体设计器里面那样,一个button选中了怎么这样,大部分图形系统都是需要做这个过程的,所以三言两语说不清楚,在http://www.playicq.cn里面有yysun大侠的那本
《计算机地图制图》的附属代码,你可以去搜索一下
 
找不到啊!帮我找找吧,如果按找你的意思的话,两个直线的交点怎么找,
 
http://www.tomore.com/1/11320.html

http://www.tomore.com/1/6516.html

http://www.tomore.com/1/5449.html

http://www.tomore.com/1/2027.html


你说的问题去下面找
http://www.richsearch.com/
 
http://www.richsearch.com/
用什么关键字啊,我找不出来,
 
YYSUN的程序我看过了,没有写怎么捕捉的啊,难道你看到他写了吗?如果看到了,能否把代码贴出来,
至于你让我到http://www.richsearch.com/ 里查,是用什么关键子的,我找不到啊
 
http://www.richsearch.com/search/search.aspx?S1=+%2B%E7%82%B9+%2B%E9%80%89+%2B%E5%8F%96&Submit1=+%E6%A3%80%E7%B4%A2+

点 选取 拾取 都可以,自己查吧


http://www.delphibbs.com/delphibbs/dispq.asp?LID=164922

这本来是计算机图形学中最基本的算法了,不过好像很多人还不知道什么是图形拾取,
甚至把图形、图像混为一谈。所谓图形是指用线框进行几何作图,比如说CAD一类的;图像
指得是点阵图,如Bitmap...。

图形拾取是在屏幕上检测标点设备是否检索到某个几何形体,如直线、圆弧...。至于检测
某些像素的集合,应该是图像处理中的图像识别问题了。

图形拾取的算法很多,概念上最简单的是判断一点到一条线断的距离是否在给定的范围
之内。当然概念简单的程序可能算起来比较慢,所以引申出来很多不同的算法。不论是那
种算法,第一个步骤都要判断“点“是否在“线段矩形“范围之内,如果在,在判断接近
程度。这里我给出点线距离算法,其他算法可以随便照一本计算机图形学的书看看:

function PointNearLine(const P, P1, p2: TPoint; D: integer): boolean;
var l, w: double;
begin
if (p.x > min(p1.x,p2.x)-d) and (p.x < max(p1.x,p2.x)+d) and
(p.y > min(p1.y,p2.y)-d) and (p.y < max(p1.y,p2.y)+d) then
begin
l := Sqrt(Sqr(p2.x-p1.x)+Sqr(p2.y-p1.y)); //length of the line
w := abs((p1.y-p2.y)*(p.x-p1.x)-(p1.x-p2.x)*(p.y-p1.y));
result := (w/l <= d);
end
else result := false;
end;
 
大哥,你误解我的意思了,我的意思是如何获得图形的交点或者端点啊
 
你说的是如何选取图形对象,这个我知道啊,我要的是当鼠标在两条线的交点或端点附近时,就在端点或交点上画一个矩形或叉,就是&quot;&quot;&quot;捕捉&quot;&quot;&quot;
 
道理差不多,都需要去遍历当前点和系统存在的线进行比较,你是想实现CAD那样的功能吧,我不会,除非自己记录交点,也未尝不可,每次增加线的时候就判断交点,删除线的时候也判断交点,到时候遍历的时候同时遍历交点,如何,思路就这些了,没有具体做过,仅供参考
 
不知道谁做过
哪位做过,请指点
 
没有偷懒的办法,交点,端点都是事先计算出来的,然后遍历这些点,如果鼠标在某一点上就如你所说搞点效果。
关键就是这些交点和端点是怎么存储和遍历的问题。
 
谢谢了!我以为有更好的方法,如果只能这样的话,谁能提供在画图的时候能计算交点的方法>?
 
可以参看 http://delphicad.home4u.china.com/ 中的执行例子
 
没有捕捉功能的饿
 
后退
顶部