win如何能给矩形框分出层来呢??
矩形框是鼠标随意拖拽的数量不定!数字是自己用ps,画上去的!!呵呵,献丑了!
拖拽画的矩形而且位置不定的,都是一层套一层的!有可能先画小矩形,然后再画大的矩形!也有可能先画大矩形再画小的矩形!如何给矩形分层次来呢!数字是层次(图片上的是自己画出来的!!),让程序分出来,矩形框,是一层包着一层的实现无限的分级!!
winfrom的程序!用Rectangle的Contains没找到方法!
[解决办法]
大家帮帮忙!
[解决办法]
在不考虑重叠的情况下
首先:要记录你画的每个图形的位置和大小。
其次:当画完一个图形时,循环之前所有的图形,判断当前所画的这个图形有没有被包含在某个图形中,或包含了哪几个图形。
最后:再根据包含和被包含的关系确定层次。
其实重叠是一种非包含或同层次的关系。
[解决办法]
道理明白,先判断第一层矩形,就是不被任何矩形所包围的,然后移除数组,再次判断第二层,也是不被任何矩形包围的,再判断第三层,这个怎么做
[解决办法]
顶一下,大家帮帮忙想想
[解决办法]
你学学使用blend,看看如何操作能够让一个控件嵌入另外一个控件里边。
[解决办法]
比如说你的图片:
这里,在1里边有几个矩形?
如果有人说有19个矩形,那么他跟我们的思路完全不靠谱。
1里边只有3个矩形嘛!我根本没有看到第4个矩形!
合理地为你的头脑分层次,你才能为软件创建合理的结构层次。那些认为1里边有十几个矩形的人就没有层次概念。
[解决办法]
这是本末倒置,做不出来分层。
[解决办法]
该回复于2012-09-08 13:12:37被版主删除
[解决办法]
/// <summary>
/// 矩形分层
/// </summary>
/// <param name="rectlists"></param>
///先判断第一层矩形,就是不被任何矩形所包围的,然后移除数组,再次判断第二层,也是不被任何矩形包围的,再判断第三层
///
private void createRectStratification(List<RectList> rectlists)
{
List<RectList> Nrectlist1 = new List<RectList>();
List<RectList> Nrectlist2 = new List<RectList>();
Nrectlist1 = rectlists;
//被包含的次数
int inrectlayer = 0;
//循环判断
foreach (RectList rect in Nrectlist1)
{
//被包含的次数
int inrectNumber = 0;
foreach (RectList rect1 in Nrectlist1)
{
if (rect.Rect != rect1.Rect)
{
if (rect1.Rect.Contains(rect.Rect))
{
foreach (RectList bigrec in Nrectlist2)
{
if (rect1 == bigrec)
{
inrectlayer = bigrec.Bigrect + 1;
continue;
}
else
{
inrectNumber++;
}
}
}
}
}
rect.Bigrect = inrectlayer;
Nrectlist2.Add(rect);
}
//判断结束
}
我是这么写的,可以分出来,但是对list<rectlist>有要求