矩形相切的问题(寻找方法即可)(300分)

  • 主题发起人 主题发起人 boylafong
  • 开始时间 开始时间
B

boylafong

Unregistered / Unconfirmed
GUEST, unregistred user!
_________________
| |
| |
| R1 | 1: 假设本来有个矩形R1,切了一个矩形R2
| | 其中中R1的左上角坐标为(0,0),右下角为(1000,1000)
| _______| R2的四个坐标也可以都知道。
| | R2 |
| | |
-------------------

_________________
| | 2:我要获得这个图形各个点的坐标,保存后可以读取出来可以
| | 画成这个图形!
| R1 |
| |
| _______|
| |
| |
------------
_________________
| | 3: 还可以继续切! R2的四个角坐标也可以获得!
| |
| R1 |
| |
| _______|
| _________|
| R3 |
------------

_________________
| | 4:最后可以保存成这个图形!要知道各个点坐标,还要可以
| | 继续切!
| R1 |
| |
| _______|
| _________|

我只要知道保存图形的定义怎么样的文件结构就可以了! 请大家帮忙想想啊 !
 
保存这个多边形的点的坐标,点个数也可以保存在前面
 
to 来如风:
我也定义了R1的各个点坐标为一个TPoint数组,例子中切了 R2后有6个坐标,按顺序记录吗 ?如果是,那么切了R3后记录怎么重新排列?
 
用ini文件保存
形式如下:
[number]
n=6
[1]
x=0
y=0
[2]
x=0
y=1000
[3]
x=1000
y=0
......

程序处理如下
myini:=Tinifile.creat('文件名');
n:=myini.readinteger('number','n',0);
for i:=1 to n do begin
x:=myini.readinteger(inttostr(i),'x',0);
y:=myini.readinteger(inttostr(i),'y',0);
end;
 
仔细想了想,觉得存储应该不是问题,
问题关键应该是如何知道这些所有点的坐标,从不同位置切下去其实算起来很复杂的

变通一下成这样如何:
首先记录R1的rect,然后每切一次就把这个切掉的rect记下。。。

以后画图的时候先把rect画好,然后再依次把曾经切掉的部分刷掉,感觉这样比较简单点
 
to yuzk2005:
先谢谢你,你误解了我的意思!

to 来如风:
我开始就是定义一个结构,这个结构包含一个TRect数组,然后循环这个数组并用空白画刷画出来,问题是R1可能是10000大小,而且切除的小矩形可能上百个,速度是个问题!
 
是啊,那就找个好点的算法,算出切割后剩的点的坐标吧:)

如果都是矩形而且不挖空的话相对简单点[:D]
 
来自:来如风, 时间:2006-5-24 10:55:14, ID:3451623
是啊,那就找个好点的算法,算出切割后剩的点的坐标吧:)

嗯,我现在就在寻找方法,你知道那里有好的算法或者有这块的吗?帮忙想想也可以,分不够可以再加!
 
大家帮忙想想啊!告诉我点怎么重新记录就可以了 !
 
有个API函数可以得到变换后的区域。可以用流保存区域。你试试
 
CombineRgnCreateEllipticRgn
CreateEllipticRgnIndirect
CreatePolygonRgn
CreatePolyPolygonRgn
CreateRectRgn
CreateRectRgnIndirect
CreateRoundRectRgn
EqualRgn
ExtCreateRegion
FillRgn
FrameRgn
GetPolyFillMode
GetRegionData
GetRgnBox
InvertRgn
OffsetRgn
PaintRgn
PtInRegion
RectInRegion
SetPolyFillMode
 
谢谢大家,问题已经解决!
分享下方法:
1 :我先把多边形每个点保存,并且每相邻两个点为一条直线!
2 :我每画一个矩形 逆时针(左上)开始循环多边形的每条直线,看他是否与新切的矩形相重合(总有一条会先与矩形相重合,可能有多个,找第一个),这样,把矩形的点与边重合的部分的点扣点,再加上新的矩形的点!
3:当然,矩形新的几个点的坐标要根据上面情况看先存哪个点(就是先重合的第一个)!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部