示例#1
0
        public IEntity2ControlInterface GetNearestTopEntity()
        {
            if (LastClick.column == -1 || LastClick.level == -1 || table.Columns[LastClick.column].Entities.Count == 0)
            {
                return(null);
            }
            IEntity2ControlInterface result = table.Columns[LastClick.column].Entities
                                              .OrderByDescending(e => e.BottomLevel)
                                              .Where(e => e.BottomLevel <= LastClick.level)
                                              .FirstOrDefault();

            return(result);
        }
示例#2
0
        /// <summary>
        /// Отрисовать сущность в виде прямоугольника со сглаженными сторонами и текстом внутри.
        /// Многова-то вызовов ScaleToControl. Надо будет обкумекать, как это порешать. Например, предрассчёт сократит вызовы с 4х до 2х.
        /// </summary>
        /// <param name="g"></param>
        /// <param name="entity">Сущность для отрисовки.</param>
        /// <param name="leftside">Левый край отрисовки сущности.</param>
        /// <param name="width">Ширина отрисовки сущности.</param>
        void PaintEntity(Graphics g, IEntity2ControlInterface entity, int leftside, int width)
        {
            //нарисуем сглаженный прямоугольник
            Rectangle    entRect  = new Rectangle(leftside, tableTop + ScaleLevelsToControl(entity.TopLevel), width, ScaleLevelsToControl(entity.BottomLevel) - ScaleLevelsToControl(entity.TopLevel));
            GraphicsPath entShape = GetBarShape(entRect, 10); //10 - магическое число, смотрится хорошо

            g.FillPath(Brushes.LightYellow, entShape);
            g.DrawPath(new Pen(Brushes.DarkGreen, 2f), entShape);

            //напишем в нём текст
            Font         drawFont  = new Font("Arial", 10);
            SolidBrush   drawBrush = new SolidBrush(Color.Black);
            RectangleF   strRect   = new RectangleF((float)entRect.X + 2f, (float)entRect.Y + 2f, entRect.Width - 4f, entRect.Height - 4f);
            StringFormat format    = new StringFormat(StringFormatFlags.LineLimit | StringFormatFlags.NoWrap);

            format.Alignment = StringAlignment.Center;
            g.DrawString(entity.StringToShow, drawFont, drawBrush, strRect, format);
        }
示例#3
0
        private void MouseClickHandler(object sender, MouseEventArgs e)
        {
            LastClick.column = GetAbsoluteColumnNumberOfClick(e.Location);
            LastClick.level  = GetVerticalValueOfClick(e.Location);

            if (e.Button == MouseButtons.Right)
            { //покажем подсказку по этому месту
                IEntity2ControlInterface clicked = GetEntityOnClick();
                if (clicked != null)
                {
                    if (tt == null)
                    {
                        tt              = new ToolTip();
                        tt.Active       = true;
                        tt.InitialDelay = 10;
                    }
                    tt.Show(clicked.StringToShow, this);
                }
            }
        }
示例#4
0
 public bool IsIntersectWith(IEntity2ControlInterface second)
 {
     throw new NotImplementedException();
 }