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); }
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))); }
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)); }