首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

win怎么能给矩形框分出层来呢?

2012-12-24 
win如何能给矩形框分出层来呢??矩形框是鼠标随意拖拽的数量不定!数字是自己用ps,画上去的!!呵呵,献丑了!拖

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>有要求

热点排行