好,好!Borlandor(五角▲大民) 的思路很好!

解决方案 »

  1.   

    一种就是像flash那样,记录动作,而不纪录实例!另一种就像Borlandor(五角▲大民)讲的,用算法将所有图像都转为直线(最终为线段)。
      

  2.   

    当然不行,为什么,你有见过,CAD什么时候把一段圆或,湖
    放大后成了一段一段的了
      

  3.   

    当然不行,为什么,你有见过,CAD什么时候把一段圆或,湖
    放大后成了一段一段的了
      

  4.   

    一个折线,变来变去的,8边,可能成了9边
    因一个角太近,而你的算法。。要做CAD,还怕烦,这。有基础类(线,圆,方,弧,。)
    有复合类,(Tlist)
    Tlist.count 是一段一段的数,而每一个都是基础类,请上面的同志想想,CAD是适量图,不是位图呀,
    人家是无级缩放的,
    楼主也是贴了好多次了,
    一直看着楼主的五星,没敢写什么,
    可是,为什么越来越离CAD远了????个人看法,不提一分!!
      

  5.   

    dearmite(我是笨笨):五星如狗屎。
      

  6.   

    对于二维的cad平面图,由于要考虑到绘出图形后的标注问题,好象都需要将里面的每一个图形对象都记录下来,包括它的坐标信息和图形特征。如直线,原弧,曲线,给他们定义好一定的描述信息,因为每一个图形都是由这些简单的图形对象组合起来的。如果两条直线的交点处要倒原弧的话,发生这个动作就增加一原弧对象,并把他的信息记录好(如起点坐标,终点坐标,弧度等,同时还要把另外两个直线对象的变动的要素改进去),如果是倒角,就增加一个直线对象,而在拉伸的时候可以根据拉伸的过程和结果来描述图形对象了。不过这样做好象挺累的,特别是要一个很好的算法便历图形中的所有对象和他的信息描述,挺难的。这是我个人的一点想法,呵呵,见笑了。
      

  7.   

    关键看你的定位:是要做以位图为基础的,还是以矢量图为基础的?建议一:建立图层,图层可以从Tlist继承,每个图层上包含若干图像单元。
      
           绘图时按图层顺序绘制,判断用户选取时也要按顺序。建议二:每个图像单元要矢量化,可以用直线来逼真。(矢量化的算法很多)建议三:纪录用户对图像单元的操作,因为操作是可控的因此变化也是可以知道的。
      

  8.   

    做个点类(坐标,颜色等等) TDot
    在此基础上做个点聚合类,TDots=class(TDot) 有加点,删点等成员函数,有个数组保存所有点,一个列表类(Dot1 Dot2 LinkStyle...),每项表示某两点的连接类型 比如先画个框,得要一个有4个点的TDots(D[0]-D[3])
    列表信息为 (LinkStyle=0 表示直线连接)
    Dot1 Dot2 LinkStyle ...
    0    1        0     ...
    1    2        0     ...
    2    3        0     ...
    3    0        0     ...有个圆角工具给第4个点做了个圆角则调用加点函数进行调整如下 (LinkStyle=1 表示圆弧连接 也可以加上角度或半径等参数)Dot1 Dot2 LinkStyle  R
    0    1        0     -1
    1    2        0     -1
    2    3        0     -1
    3    0        0     -1   *
    4    2        0     -1   * 一点分两点后与两边相连 
    3    4        1     10 
    一点想法,先简单地想这么多