如何让两个矩形相互移出?

时间:2010-07-30 10:49:19

标签: c#

假设我有两个相互重叠的矩形......

alt text http://filebox.me/files/u8atnxd34_overlap1.png

我希望他们这样结束......

alt text http://filebox.me/files/jt8ef1t44_overlap2.png

我如何计算我需要添加的位置,以便矩形相互移出?

注意:我确实发现了this问题,但它没有告诉我如何实际移动矩形。

每个人都假设我想向下移动矩形,但实际上我希望矩形在最合乎逻辑的方向上移动。因此,如果矩形完全位于第一个矩形的右侧并向左移动1个像素,那么它将向下移动,而不是向下移动。它将向右移动。

5 个答案:

答案 0 :(得分:2)

__________
|    ____|____
| A |    |    |
|___|____|    |
    |      B  |
    |_________|

if [ 
     (TopLeftOfA.Y + A.Height - TopLeftOfB.Y)
     < 
     (TopLeftOfA.X + A.Width  - TopLeftOfB.X)
   ]
    TopLeftOfB.Y = TopLeftOfA.Y + A.Height
else 
    TopLeftOfB.X = TopLeftOfA.X + A.Width

答案 1 :(得分:0)

从第二个矩形向任意方向移动第一个矩形。

答案 2 :(得分:0)

在您显示的确切配置中:

其中a =是前景矩形,b =背景三角形。

a.Top = b.Bottom; // Add +1 to have it just past the bottom.

答案 3 :(得分:0)

rectangle2.top = rectangle1.bottom+1(javascript)

答案 4 :(得分:0)

更容易:

将第一个矩形底部的Y括号设置为第二个矩形顶部的ycoördinates