谢了,300分!(300分)

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

brt

Unregistered / Unconfirmed
GUEST, unregistred user!
本人是初学,有一问题请教各位:
我画两个矩行a,b,由于部分重合,导致
面积减小,又用c补上。
Rectangle(80,80,120,120); //a
Rectangle(80,100,200,200);//b
Rectangle(200,100,240,120);//c
如按上述原理,画的矩形多了该怎么办呀!
 
呵呵,这个应该是算法的问题了, 要么把画过的矩形都存起来,画新的矩形时,查找一下
是否有重合,有则再补上。

不过 这是个不是方法的方法 很烦哦
 
你畫之前先判斷會不會重合不行嗎﹖若你是Canvas畫的﹐也不會怎么樣呀。
 
不如说说你要解决的什么问题,判断重合的算法可能挺复杂。
 
是啊,先说说你要干什么。说不定有简化模型。
 
>你的问题说明的不清楚!

>我估计你是想判断两个矩形是否相交,如果相交,需要重画相交的部分!

>我按照自己的理解给你提点思路,只有自己琢磨出来的东西才会成为你自己的知识!

>思路:
对于你画的第一个矩形,你可以创建一个矩形区域,rgn :=[red]CreateRectRgn[/red](x0,y0,x1,y1),
对于第二个矩形rect,你应该运用[red]RectInRegion[/red]来判断它的某一部分是否在第一个矩形所确定的
区域内;这样你就可以判断出两个矩形是否相交了。
 
谢谢各位,我再举个例子,能更说明白。
某小学某班有25人,分五行排列。
1-----
2-----
3-----
4-----
5-----
每行五人;

给出条件:第一天,每行减一人,加入到第二行,则
1----
2---------
3----
4----
5----
给出条件:第二天,每行减二人,加入到第三行,则
1--
2-------
3------------
4--
5--
...

就这么循环,图在变,但人数不变,也就是面积不变。

注:- 代表人,也就是程序里的矩形。
 
每执行一个条件时都重新根据人数的多少重新画一遍,不就行了吗?
 
如果你要解决这个问题也简单
你只需要记住每一行的个数,然后用个数乘以每个矩形的宽度就是总的宽度
然后重新画就行了,不是很简单吗?
计算的时侯就进行矩形个数的加减就行了
 
你给我发的软件,老是报错,好像找不到数据文件
 
看到了k线,其实就是数字计算,画矩形图很简单呀
 
假设每个最小矩形单元是5*5
第一行是4个矩形时,就rectangle(0,0,20,5)
过了一天,第一行是2个矩形,就rectangle(0,0,10,5)
第三天如果第一行是1个矩形,就rectangle(0,0,5,5)
 

Similar threads

D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
D
回复
0
查看
785
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部