Ejemplo n.º 1
0
        internal override void StartDrag(MouseEventArgs e)
        {
            _startLoc      = new Point(e.X, e.Y);
            _previousLoc   = new Point(e.X, e.Y);
            screenGraphics = Chart.CreateGraphics();
            backBuffer     = new MemGraphics(Chart.Width, Chart.Height);
            frontBuffer    = new MemGraphics(Chart.Width, Chart.Height);
            Chart.Draw(backBuffer.Graphics);
            var rect = CurrentPane.ClientToChart(CurrentPane.CanvasRect);

            frontBuffer.Graphics.SetClip(rect);
            pen   = new Pen(ForeColor);
            brush = new SolidBrush(BackColor);
            DrawSelection(_startLoc, _startLoc);
        }
Ejemplo n.º 2
0
        internal override void FinishDrag(MouseEventArgs e)
        {
            if (PaneFrameTool.PaneMoveStyle == PaneMoveStyle.Blend)
            {
                _imageAttr.Dispose();
                _imageAttr   = null;
                _colorMatrix = null;
            }
            else
            {
                _pen.Dispose();
            }
            _screenGraphics.Dispose();
            _backBuffer.Dispose();
            _frontBuffer.Dispose();
            Point point = CurrentPane.ClientToChart(new Point(e.X, e.Y));
            Pane  topPane;

            if (point.Y < Chart.ClientRect.Top)
            {
                topPane = Chart.Panes.TopPane;
            }
            else if (point.Y > ((Chart.ClientRect.Bottom - 1) - Chart.Panes.XAxisPane.FixedHeight))
            {
                topPane = Chart.Panes.BottomPane;
            }
            else
            {
                topPane = Owner.FindPane(Chart.ClientRect.Left, point.Y);
            }
            if ((topPane != CurrentPane) && (topPane != null))
            {
                int index = Chart.Panes.PositionList.IndexOf(CurrentPane);
                if (Chart.Panes.PositionList.IndexOf(topPane) > index)
                {
                    Chart.Panes.PositionList.Remove(CurrentPane);
                    int num3 = Chart.Panes.PositionList.IndexOf(topPane);
                    Chart.Panes.PositionList.Insert(num3 + 1, CurrentPane);
                }
                else
                {
                    Chart.Panes.PositionList.Remove(CurrentPane);
                    int num4 = Chart.Panes.PositionList.IndexOf(topPane);
                    Chart.Panes.PositionList.Insert(num4, CurrentPane);
                }
            }
            Chart.PerformLayout();
        }
Ejemplo n.º 3
0
        internal override void StartDrag(MouseEventArgs e)
        {
            Pane currentPane;
            Pane pane2;
            bool flag = HitTestPaneBottomBorder(e.Y);

            HitTestPaneTopBorder(e.Y);
            int index = Chart.Panes.PositionList.IndexOf(CurrentPane);

            if (flag)
            {
                currentPane = CurrentPane;
                pane2       = (Pane)Chart.Panes.PositionList[index + 1];
            }
            else
            {
                currentPane = (Pane)Chart.Panes.PositionList[index - 1];
                pane2       = CurrentPane;
            }
            _paneResizeEventArgs = new PaneResizeEventArgs(currentPane, pane2)
            {
                Start   = CurrentPane.PointToScreen(new Point(e.X, e.Y)),
                Current = CurrentPane.PointToScreen(new Point(e.X, e.Y)),
                AffectedPaneInitialHeight = currentPane.Height,
                AdjacentPaneInitialHeight = pane2.Height
            };
            if (PaneFrameTool.PaneResizeStyle == PaneResizeStyle.Outline)
            {
                _screenGraphics = Chart.CreateGraphics();
                _backBuffer     = new MemGraphics(Chart.Width, Chart.Height);
                _frontBuffer    = new MemGraphics(Chart.Width, Chart.Height);
                _pen            = new Pen(Chart.visualSettings.PaneFrameToolOutlineColor, 2f);
                Chart.Draw(_backBuffer.Graphics);
                Rectangle clientRect = Chart.ClientRect;
                clientRect.Offset(CurrentPane.PaneFrame.LeftBorderWidth, CurrentPane.PaneFrame.TopBorderWidth);
                clientRect.Width  -= CurrentPane.PaneFrame.LeftBorderWidth + CurrentPane.PaneFrame.RightBorderWidth;
                clientRect.Height -= CurrentPane.PaneFrame.TopBorderWidth + CurrentPane.PaneFrame.BottomBorderWidth;
                _frontBuffer.Graphics.SetClip(clientRect);
                DrawOutline(_paneResizeEventArgs.AffectedPane.Bounds, _paneResizeEventArgs.AffectedPane.Bounds);
            }
        }
Ejemplo n.º 4
0
        internal override void ProcessDrag(MouseEventArgs e)
        {
            Rectangle bounds = _paneResizeEventArgs.AffectedPane.Bounds;

            _paneResizeEventArgs.Current = CurrentPane.PointToScreen(new Point(e.X, e.Y));
            int num = _paneResizeEventArgs.Current.Y - _paneResizeEventArgs.Start.Y;
            int minimumPaneHeight = _paneResizeEventArgs.AffectedPaneInitialHeight + num;
            int num3 = _paneResizeEventArgs.AdjacentPaneInitialHeight - num;

            if (minimumPaneHeight < _paneResizeEventArgs.AffectedPane.MinimumPaneHeight)
            {
                minimumPaneHeight = _paneResizeEventArgs.AffectedPane.MinimumPaneHeight;
                num3 = (_paneResizeEventArgs.AdjacentPaneInitialHeight + _paneResizeEventArgs.AffectedPaneInitialHeight) -
                       _paneResizeEventArgs.AffectedPane.MinimumPaneHeight;
            }
            if (num3 < _paneResizeEventArgs.AdjacentPane.MinimumPaneHeight)
            {
                num3 = _paneResizeEventArgs.AdjacentPane.MinimumPaneHeight;
                minimumPaneHeight = (_paneResizeEventArgs.AffectedPaneInitialHeight +
                                     _paneResizeEventArgs.AdjacentPaneInitialHeight) -
                                    _paneResizeEventArgs.AffectedPane.MinimumPaneHeight;
            }
            _paneResizeEventArgs.AffectedPane.Height = minimumPaneHeight;
            _paneResizeEventArgs.AdjacentPane.Height = num3;
            _paneResizeEventArgs.AdjacentPane.Top    = (_paneResizeEventArgs.AffectedPane.Top +
                                                        _paneResizeEventArgs.AffectedPane.Height) + Chart.InterPaneGap;
            Rectangle curRect = _paneResizeEventArgs.AffectedPane.Bounds;
            Rectangle rect    = _paneResizeEventArgs.AffectedPane.Bounds;

            rect.Height += _paneResizeEventArgs.AdjacentPane.Height;
            rect         = Conversion.ChildToParent(rect, Chart.ClientRect);
            if (PaneFrameTool.PaneResizeStyle == PaneResizeStyle.Instantaneous)
            {
                Chart.Invalidate(rect);
            }
            else
            {
                DrawOutline(bounds, curRect);
            }
            PaneFrameTool.FirePaneResize(_paneResizeEventArgs);
        }
Ejemplo n.º 5
0
        private void DrawSelection(Point previousLoc, Point currentLoc)
        {
            Point point = CurrentPane.ClientToChart(_startLoc);

            previousLoc = CurrentPane.ClientToChart(previousLoc);
            currentLoc  = CurrentPane.ClientToChart(currentLoc);
            Rectangle rectangle  = CurrentPane.ClientToChart(CurrentPane.CanvasRect);
            Rectangle rectangle2 = previousLoc.X > point.X
                                       ? new Rectangle(point.X, rectangle.Y, (previousLoc.X - point.X) + 1, rectangle.Height)
                                       : new Rectangle(previousLoc.X, rectangle.Y, (point.X - previousLoc.X) + 1, rectangle.Height);
            Rectangle rectangle3 = currentLoc.X > point.X
                                       ? new Rectangle(point.X, rectangle.Y, (currentLoc.X - point.X) + 1, rectangle.Height)
                                       : new Rectangle(currentLoc.X, rectangle.Y, (point.X - currentLoc.X) + 1, rectangle.Height);

            backBuffer.Render(frontBuffer, rectangle2);
            frontBuffer.Graphics.FillRectangle(brush, rectangle3);
            frontBuffer.Graphics.DrawLine(pen, rectangle3.Left, rectangle3.Top, rectangle3.Left, rectangle3.Bottom);
            if (rectangle3.Width > 0)
            {
                frontBuffer.Graphics.DrawLine(pen, rectangle3.Right - 1, rectangle3.Top, rectangle3.Right - 1,
                                              rectangle3.Bottom);
            }
            frontBuffer.Render(screenGraphics, Rectangle.Union(rectangle2, rectangle3));
        }
Ejemplo n.º 6
0
 private IPpsWindowPane FindOpenPane(Type paneType, LuaTable arguments)
 => CurrentPane != null && CurrentPane.EqualPane(paneType, arguments) ? CurrentPane : null;