示例#1
0
 public RenderBase getSelectClickItem(PointF pos, out ClickPosArena arena)
 {
     arena = ClickPosArena.PosCenter;
     //foreach (RenderBase render in childItems)
     //{
     for (int i = childItems.Count - 1; i >= 0; i--)
     {
         RenderBase render = childItems[i];
         RectangleF rect   = render.boxAtParent();
         if (isCanDeepPanel(render))
         {
             PointF     relaPos   = new PointF(pos.X - rect.X, pos.Y - rect.Y);
             RenderBase clickItem = render.getSelectClickItem(relaPos, out arena);
             if (clickItem != null)
             {
                 arena = clickItem.calcClickArena(relaPos);
                 return(clickItem);
             }
         }
         else if (render.isSelect && rect.Contains(pos))
         {
             arena = render.calcClickArena(pos);
             return(render);
         }
     }
     return(null);
 }
示例#2
0
        private PointF getPointByIndex(int index)
        {
            if (_renderItem == null)
            {
                return(new PointF(0, 0));
            }
            RectangleF itemRect = _renderItem.boxAtParent();
            int        row      = index / _col;
            int        col      = index % _col;

            return(new PointF(-itemRect.X + col * (_renderItem.size.Width + _padCol), -itemRect.Y + row * (_renderItem.size.Height + _padRow)));
        }
示例#3
0
        public void execSetLayoutAlign(LayoutAlignType layout)
        {
            mouseOpItems = getSelectItems();
            if (mouseOpItems.Count <= 1)
            {
                return;
            }
            RenderBase        firstSelect = mouseOpItems[0];
            List <RenderBase> opItems     = new List <RenderBase>();

            foreach (RenderBase item in mouseOpItems)
            {
                if (item.getParent() == firstSelect.getParent())
                {
                    opItems.Add(item);
                }
            }
            if (opItems.Count <= 1)
            {
                return;
            }
            recordOriStatus(opItems);
            float      left = 0, centerHor = 0, right = 0, top = 0, centerVer = 0, bottom = 0;
            SizeF      selectSize  = firstSelect.size;
            PointF     selectPoint = firstSelect.pos;//scenePointToRender((int)firstSelect.pos.X, (int)firstSelect.pos.Y);
            RectangleF selectRect  = firstSelect.boxAtParent();

            left      = selectPoint.X;
            centerHor = selectPoint.X + selectSize.Width / 2;
            right     = selectPoint.X + selectSize.Width;
            top       = selectPoint.Y;
            centerVer = selectPoint.Y + selectSize.Height / 2;
            bottom    = selectPoint.Y + selectSize.Height;

            switch (layout)
            {
            case LayoutAlignType.LayoutAlign_Left:
            {
                foreach (RenderBase item in mouseOpItems)
                {
                    RectangleF rect = item.boxAtParent();
                    item.pos = new PointF(item.pos.X + left - rect.X, item.pos.Y);
                }
            }
            break;

            case LayoutAlignType.LayoutAlign_Right:
            {
                foreach (RenderBase item in mouseOpItems)
                {
                    RectangleF rect = item.boxAtParent();
                    item.pos = new PointF(item.pos.X + right - rect.X - rect.Width, item.pos.Y);
                }
            }
            break;

            case LayoutAlignType.LayoutAlign_CenterHor:
            {
                foreach (RenderBase item in mouseOpItems)
                {
                    RectangleF rect = item.boxAtParent();
                    item.pos = new PointF(item.pos.X + centerHor - rect.X - rect.Width / 2, item.pos.Y);
                }
            } break;

            case LayoutAlignType.LayoutAlign_Top:
            {
                foreach (RenderBase item in mouseOpItems)
                {
                    RectangleF rect = item.boxAtParent();
                    item.pos = new PointF(item.pos.X, item.pos.Y + top - rect.Y);
                }
            }
            break;

            case LayoutAlignType.LayoutAlign_Bottom:
            {
                foreach (RenderBase item in mouseOpItems)
                {
                    RectangleF rect = item.boxAtParent();
                    item.pos = new PointF(item.pos.X, item.pos.Y + bottom - rect.Y - rect.Height);
                }
            }
            break;

            case LayoutAlignType.LayoutAlign_CenterVer:
            {
                foreach (RenderBase item in mouseOpItems)
                {
                    RectangleF rect = item.boxAtParent();
                    item.pos = new PointF(item.pos.X, item.pos.Y + centerVer - rect.Y - rect.Height / 2);
                }
            } break;

            default:
                break;
            }
            commandManager.AddCommand(new CommandMoveList(this, mouseOpItems));
        }