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