CAD中画图形可以达到几十万个,操作依然流畅。怎么判断一个点是不是在用gdi画的直线上,不能用Region来判断,有没有其他的算法?因为一万条直线,内存中就需要保存一万个Region,那速度太慢

解决方案 »

  1.   

    如果数据量大的话,就需要用到索引技术,如B tree索引、二叉树索引 等,避免和每个元素进行判断,这样将大幅提高性能。一般在CAD书中没有提到,在有些GIS书籍中有描述
      

  2.   

    不知道你的线对象是怎么实现的,
    用GetChildAtPoint行不行
      

  3.   

    楼上的是要继承control,那是不行的
      

  4.   

    用Region保存直线??高见!!!!!!!!
      

  5.   

    以一个点画一条水平或垂直的线line1,如果line1与其他直线的交点与这个点相同,则这个点在那条直线上,否则不在。
    不知道表达的明不明白,我以前用过这个方法,还算好用。
      

  6.   

    我觉得判断一个点是不是在直线上不是通过region来判断,而是通过背后的数据结构来判断,举例如一条直线,你应该建立直线类的数学模型,然后根据直线本生的特性来判断某个点是不是在直线上,其它的图形也类似,关键是你如何建立好图形的数学模型
      

  7.   

    不用保存方程,直接用坐标计算.取直线上的两个点(x1,y1),(x2,y2).点坐标为(xq,yq),如果
    (xq-x1)*(y2-y1)-(x2-x1)*(yq-y1)=0,点就在直线上.如果要判断是否在端点为(x1,y1),(x2,y2)的线段上,还要判断min(x1,x2)<=xq<=max(x1,x2)和min(y1,y2)<yq<max(y1,y2)是否同时成立.