关于矩形合并的问题?(100分)

  • 主题发起人 主题发起人 libra163
  • 开始时间 开始时间
L

libra163

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何让两个相交的矩形合并成一个大矩形???
|-----------|
| ------|-------|
| | | |
|-----------| |
| |
|-------------|

合并为:
|-------------------|
| |
| |
| |
| |
--------------------|
 
procedure TForm1.Button1Click(Sender: TObject);
var
pt1, pt2, pt3, pt4 :TPoint;
Rect1, Rect2, Rect :TRect;
begin
//pt1, pt2, pt3, pt4是4个点
Rect1:=Rect(pt1, pt2); //方快Rect1由 pt1, pt2 点确定
Rect2:=Rect(pt3, pt4); //方快Rect2由 pt3, pt4 点确定
if ptInRect(Rect2, pt2) then //如果pt2 点在方快Rect2内
Rect:=Rect(pt1, pt4); //则方快由pt1, pt4 点确定
end;
 
UnionRect(DestRect, SourceRect1, SourceRect2)
 
to coldew:
如果两个不相交呢?
 
p3
|-------------|
p1 | |
|-----------| |
| | | |
| ------|-------| p4
| |
|-----------|p2

这样的话就不应该是有p1和p4组成大的矩形了啊?
 
这就要根据你的需求,将各种情况都列出来。

我只是给你一个例子而已。
 
如果你的需求是:只要两个矩形相交,就产生一个大矩形把它们包含的话,就这样:
1。判断一个矩形的4个点,有没有在另一个矩形中
2。UnionRect(DestRect, SourceRect1, SourceRect2);//这个函数我具体没用过
 
分别得到两个矩形的长和宽,再得到两个矩形的面积,然后问题就简单了。
 
情况很多,但都不难.只是繁一点而已.
 
我的方法不可以吗?
不管这两个矩形区域是什么样这个函数的结果就是包含这两个矩形区域的最小矩形区域。
 
还没搞定吗?如果是说一声,明天给你代码
 
后退
顶部