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); }
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(); }
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); }
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)); }
private IPpsWindowPane FindOpenPane(Type paneType, LuaTable arguments) => CurrentPane != null && CurrentPane.EqualPane(paneType, arguments) ? CurrentPane : null;