把每个几何图形的类都封装到单独的类中,并且每个类都有自己的RESIZE方法,然后在另一个类中用一个聚集存放你加进的图形对象,在其中一个方法来循环调用聚集中每个对象的RESIZE方法。
这好象是合成模式和策略模式的应用!

解决方案 »

  1.   

    诸位大爷说得没错!
    整体图形中的元素图形有各自的RESIZE方法!
    但试想对整体图形的矩形的RESIZE后,则元素图形的高宽则由整体图形变动值进行定义!
    但是元素图形的位置如果不变的话那么这个整体图形就要变形!
    问的就是元素图形的位置的计算?
    我靠,好聪明的一休!
      

  2.   

    诸位大爷说得没错!
    整体图形中的元素图形有各自的RESIZE方法!
    但试想对整体图形的矩形的RESIZE后,则元素图形的高宽则由整体图形变动值进行定义!
    但是元素图形的位置如果不变的话那么这个整体图形就要变形!
    问的就是元素图形的位置的计算?
    我靠,好聪明的一休!
      

  3.   

    元素图形的位置的计算: 我假设你的每个被选中的图形都有各自的位置确定因素,比如圆的圆心c,矩形的中心mc。
    在你没有 RESIZE 之前这些图形的位置确定因素点c、mc在这个状态的外接矩形的位置我暂时用相对于该外接矩形的左上点的偏移量来确定,假设外接矩形长宽为:lx,ly;并且 c(cx,cy);mc(mcx,mcy)。
    那么在你 RESIZE 以后的位置确定因素点c、mc相对于RESIZE 以后的外接矩形(假设现在的外接矩形长宽为:lx1,ly1)的位置应该是这样:c1(cx*lx1/lx,cy*ly1/ly);mc1(mcx*lx1/lx,mcx*ly1/ly)。在确定了这些图形的位置确定因素点之后你就可以一一绘制出它们了。
    参考哈,思路就是个体变化的时候,个体在整体的位置是按对应左边的比例变化的,如果不按比例,那么可以得到扭曲错位的效果--如果这正是你希望的~~:)
    ---对了,偶不是一休(刚刚看了看偶的发型还不错:)
      

  4.   

    sorry: "个体在整体的位置是按对应左边的比例变化的"-->"个体在整体的位置是按对应坐标的比例变化的"
      

  5.   

    我靠!还是透明的一休!
    c1(cx*lx1/lx,cy*ly1/ly);mc1(mcx*lx1/lx,mcx*ly1/ly)。
    不错!呵呵!十分不错!试一试!
    再说:
    圆和矩形的结束点(通过其计算高和其他内容)应该比较好算!
    但也应该是按比例的
    如果c1.width = c1.width*lx1/lx;对不对!
    嗯!透明的一休!问你呢?
      

  6.   

    汗~狂深奥。。
    请问pqds(一个女农民):
    如果我是一个4x4的正方形,里面有两个半径为1的圆正好充满,这时候我拖动正方形变成了4x6的长方形,这时候你原来的两个圆形应该变成啥样??是变成了互相有交集的两个园了么??
      

  7.   

    还是有问题:
    方法中传进4个参数(double newwidth,double oldwidth,double newheight,double oldheight)
    分别为拖动前的高,宽和拖动后的高宽//起点x//      position.x = position.x*(newwidth/oldwidth);//计算有问提
    //起点y//      position.y = position.x*(newheight/oldheight);//计算有问提
    //矩形宽//      rectangle.width = rectangle.width*(newwidth/oldwidth);//计算正确?表明上看如此,但拉伸倒一定程度就超出了,本身选择框的大小
    //矩形高//      rectangle.height = rectangle.height*(newheight/oldheight);//计算正确?表明上看如此,但拉伸倒一定程度就超出了,本身选择框的大小这种方式的具体症状是,起点位置还是不正确,导致变形!尤其在最后元素矩形通过移位接触倒选择框后则就不再变形?是不是我的选择框不能按照自己画的方式,选择后,直接按照元素矩形生成最小矩形,然后再
    大家帮满了呀!
      

  8.   

    看到你的消息来回复:首先你的 选择框 不是你的图形的内容也就是说我们的讨论不包括你的 选择框 的绘制--如果你要绘制,正确的也应该就是当前你所选择中的外接矩形。基于这一点你所说的 “但拉伸倒一定程度就超出了,本身选择框的大小” 就不是问题,因为你在图形变化后 选择筐也是同样比例放大的,而且他们在同一维度变化。
    “//起点y//      position.y = position.x*(newheight/oldheight);//计算有问提” 或许你应该说成是 //起点y//      position.y = position.y*(newheight/oldheight);//计算有问提    这里要强调的是 position 是相对于你的外接矩形左上顶点的位置,不应该是你图形坐标系里的位置。我们的讨论有个重要的依赖是 外接矩形 
    能说的就这些了,祝你好运!---我真的不是一休~~