日期:2014-05-20  浏览次数:20791 次

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)
                {