コード例 #1
0
ファイル: Excel-Floating.cs プロジェクト: Daoting/dt
        void CachFloatingObjectsMovingResizingLayoutModels()
        {
            ViewportInfo viewportInfo        = GetViewportInfo();
            int          columnViewportCount = viewportInfo.ColumnViewportCount;
            int          rowViewportCount    = viewportInfo.RowViewportCount;

            _cachedFloatingObjectMovingResizingLayoutModel = new FloatingObjectLayoutModel[rowViewportCount + 2, columnViewportCount + 2];
            for (int i = -1; i <= rowViewportCount; i++)
            {
                for (int j = -1; j <= columnViewportCount; j++)
                {
                    _cachedFloatingObjectMovingResizingLayoutModel[i + 1, j + 1] = new FloatingObjectLayoutModel(GetViewportFloatingObjectLayoutModel(i, j));
                }
            }
        }
コード例 #2
0
ファイル: Excel-Floating.cs プロジェクト: Daoting/dt
        internal Rect[] GetFloatingObjectsMovingFrameRects(int rowViewport, int columnViewport)
        {
            var allSelectedFloatingObjects = GetAllSelectedFloatingObjects();

            if ((allSelectedFloatingObjects == null) || (allSelectedFloatingObjects.Count == 0))
            {
                return(null);
            }
            List <Rect> list          = new List <Rect>();
            Point       mousePosition = MousePosition;

            new Point(mousePosition.X - _floatingObjectsMovingResizingStartPoint.X, mousePosition.Y - _floatingObjectsMovingResizingStartPoint.Y);
            FloatingObjectLayoutModel cacheFloatingObjectsMovingResizingLayoutModels = GetCacheFloatingObjectsMovingResizingLayoutModels(rowViewport, columnViewport);

            foreach (FloatingObject obj2 in allSelectedFloatingObjects)
            {
                bool flag;
                bool flag2;
                FloatingObjectLayout layout = cacheFloatingObjectsMovingResizingLayoutModels.Find(obj2.Name);
                Point  point2 = new Point(_floatingObjectsMovingResizingStartPoint.X - layout.X, _floatingObjectsMovingResizingStartPoint.Y - layout.Y);
                double x      = mousePosition.X - point2.X;
                double y      = mousePosition.Y - point2.Y;
                KeyboardHelper.GetMetaKeyState(out flag, out flag2);
                if (flag)
                {
                    double num3 = x - layout.X;
                    double num4 = y - layout.Y;
                    if (Math.Abs(num3) > Math.Abs(num4))
                    {
                        y = layout.Y;
                    }
                    else
                    {
                        x = layout.X;
                    }
                }
                list.Add(new Rect(x, y, layout.Width, layout.Height));
            }
            return(list.ToArray());
        }
コード例 #3
0
ファイル: Excel-Floating.cs プロジェクト: Daoting/dt
        Rect[] GetFloatingObjectsTopCenterResizingRects(int rowViewport, int columnViewport, Point mousePosition)
        {
            List <Rect> list = new List <Rect>();
            FloatingObjectLayoutModel cacheFloatingObjectsMovingResizingLayoutModels = GetCacheFloatingObjectsMovingResizingLayoutModels(rowViewport, columnViewport);
            FloatingObjectLayoutModel viewportFloatingObjectLayoutModel = GetViewportFloatingObjectLayoutModel(rowViewport, columnViewport);
            Point point = new Point(mousePosition.X - _floatingObjectsMovingResizingStartPoint.X, mousePosition.Y - _floatingObjectsMovingResizingStartPoint.Y);

            foreach (FloatingObject obj2 in _movingResizingFloatingObjects)
            {
                FloatingObjectLayout layout  = cacheFloatingObjectsMovingResizingLayoutModels.Find(obj2.Name);
                FloatingObjectLayout layout2 = viewportFloatingObjectLayoutModel.Find(obj2.Name);
                Point  point2 = new Point(layout.X, layout.Y);
                Point  point3 = new Point(point2.X + point.X, point2.Y + point.Y);
                Point  point4 = new Point(layout2.X + layout2.Width, layout2.Y + layout2.Height);
                double y      = Math.Min(point3.Y, point4.Y);
                double height = Math.Abs((double)(point4.Y - point3.Y));
                double width  = layout2.Width;
                Rect   rect   = new Rect(layout2.X, y, width, height);
                list.Add(rect);
            }
            return(list.ToArray());
        }