/// <summary> /// Handler for the "Set Scale to Default" context menu item. Sets the scale ranging to /// full auto mode for all axes. /// </summary> /// <remarks> /// This method differs from the <see c_ref="ZoomOutAll" /> method in that it sets the scales /// to full auto mode. The <see c_ref="ZoomOutAll" /> method sets the scales to their initial /// setting prior to any user actions (which may or may not be full auto mode). /// </remarks> /// <param name="primaryPane">The <see c_ref="GraphPane" /> object which is to have the /// scale restored</param> public void RestoreScale(GraphPane primaryPane) { if (primaryPane != null) { //Go ahead and save the old zoomstates, which provides an "undo"-like capability //ZoomState oldState = primaryPane.ZoomStack.Push( primaryPane, ZoomState.StateType.Zoom ); ZoomState oldState = new ZoomState(primaryPane, ZoomState.StateType.Zoom); using (Graphics g = CreateGraphics()) { if (_isSynchronizeXAxes || _isSynchronizeYAxes) { foreach (GraphPane pane in _masterPane._paneList) { pane.ZoomStack.Push(pane, ZoomState.StateType.Zoom); ResetAutoScale(pane, g); } } else { primaryPane.ZoomStack.Push(primaryPane, ZoomState.StateType.Zoom); ResetAutoScale(primaryPane, g); } // Provide Callback to notify the user of zoom events if (ZoomEvent != null) { ZoomEvent(this, oldState, new ZoomState(primaryPane, ZoomState.StateType.Zoom)); } //g.Dispose(); } Refresh(); } }
/// <summary> /// The Copy Constructor /// </summary> /// <param name="rhs">The <see c_ref="ZoomState"/> object from which to copy</param> public ZoomState(ZoomState rhs) { _xAxis = new ScaleState(rhs._xAxis); _x2Axis = new ScaleState(rhs._x2Axis); _yAxis = new ScaleStateList(rhs._yAxis); _y2Axis = new ScaleStateList(rhs._y2Axis); }
/// <summary> /// Handler for the "Undo All Zoom/Pan" context menu item. Restores the scale ranges to the values /// before all zoom and pan operations /// </summary> /// <remarks> /// This method differs from the <see c_ref="RestoreScale" /> method in that it sets the scales /// to their initial setting prior to any user actions. The <see c_ref="RestoreScale" /> method /// sets the scales to full auto mode (regardless of what the initial setting may have been). /// </remarks> /// <param name="primaryPane">The <see c_ref="GraphPane" /> object which is to be zoomed out</param> public void ZoomOutAll(GraphPane primaryPane) { if (primaryPane != null && !primaryPane.ZoomStack.IsEmpty) { ZoomState.StateType type = primaryPane.ZoomStack.Top.Type; ZoomState oldState = new ZoomState(primaryPane, type); //ZoomState newState = pane.ZoomStack.PopAll( pane ); ZoomState newState = null; if (_isSynchronizeXAxes || _isSynchronizeYAxes) { foreach (GraphPane pane in _masterPane._paneList) { ZoomState state = pane.ZoomStack.PopAll(pane); if (pane == primaryPane) { newState = state; } } } else { newState = primaryPane.ZoomStack.PopAll(primaryPane); } // Provide Callback to notify the user of zoom events if (ZoomEvent != null) { ZoomEvent(this, oldState, newState); } Refresh(); } }
/// <summary> /// Save the current states of the GraphPanes to a separate collection. Save a single /// (<see paramref="primaryPane" />) GraphPane if the panes are not synchronized /// (see <see c_ref="IsSynchronizeXAxes" /> and <see c_ref="IsSynchronizeYAxes" />), /// or save a list of states for all GraphPanes if the panes are synchronized. /// </summary> /// <param name="primaryPane">The primary GraphPane on which zoom/pan/scroll operations /// are taking place</param> /// <param name="type">The <see c_ref="ZoomState.StateType" /> that describes the /// current operation</param> /// <returns>The <see c_ref="ZoomState" /> that corresponds to the /// <see paramref="primaryPane" />. /// </returns> private ZoomState ZoomStateSave(GraphPane primaryPane, ZoomState.StateType type) { ZoomStateClear(); if (_isSynchronizeXAxes || _isSynchronizeYAxes) { foreach (GraphPane pane in _masterPane._paneList) { ZoomState state = new ZoomState(pane, type); if (pane == primaryPane) { _zoomState = state; } _zoomStateStack.Add(state); } } else { _zoomState = new ZoomState(primaryPane, type); } return(_zoomState); }
/// <summary> /// Clear the collection of saved states. /// </summary> private void ZoomStateClear() { _zoomStateStack.Clear(); _zoomState = null; }
/// <summary> /// Save the current states of the GraphPanes to a separate collection. Save a single /// (<see paramref="primaryPane" />) GraphPane if the panes are not synchronized /// (see <see c_ref="IsSynchronizeXAxes" /> and <see c_ref="IsSynchronizeYAxes" />), /// or save a list of states for all GraphPanes if the panes are synchronized. /// </summary> /// <param name="primaryPane">The primary GraphPane on which zoom/pan/scroll operations /// are taking place</param> /// <param name="type">The <see c_ref="ZoomState.StateType" /> that describes the /// current operation</param> /// <returns>The <see c_ref="ZoomState" /> that corresponds to the /// <see paramref="primaryPane" />. /// </returns> private ZoomState ZoomStateSave( GraphPane primaryPane, ZoomState.StateType type ) { ZoomStateClear(); if ( _isSynchronizeXAxes || _isSynchronizeYAxes ) { foreach ( GraphPane pane in _masterPane._paneList ) { ZoomState state = new ZoomState( pane, type ); if ( pane == primaryPane ) _zoomState = state; _zoomStateStack.Add( state ); } } else _zoomState = new ZoomState( primaryPane, type ); return _zoomState; }
/// <summary> /// Default Constructor /// </summary> public GraphControl() { InitializeComponent(); // These commands do nothing, but they get rid of the compiler warnings for // unused events bool b = MouseDown == null || MouseUp == null || MouseMove == null; // Link in these events from the base class, since we disable them from this class. base.MouseDown += ZedGraphControl_MouseDown; base.MouseUp += ZedGraphControl_MouseUp; base.MouseMove += ZedGraphControl_MouseMove; //this.MouseWheel += new System.Windows.Forms.MouseEventHandler( this.ZedGraphControl_MouseWheel ); // Use double-buffering for flicker-free updating: SetStyle( ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer | ControlStyles.ResizeRedraw, true ); //isTransparentBackground = false; //SetStyle( ControlStyles.Opaque, false ); SetStyle( ControlStyles.SupportsTransparentBackColor, true ); //this.BackColor = Color.Transparent; _resourceManager = new ResourceManager("UIGraphLib.GraphLocale", Assembly.GetExecutingAssembly() ); Rectangle rect = new Rectangle( 0, 0, Size.Width, Size.Height ); _masterPane = new MasterPane( "", rect ); _masterPane.Margin.All = 0; _masterPane.Title.IsVisible = false; string titleStr = _resourceManager.GetString( "title_def" ); string xStr = _resourceManager.GetString( "x_title_def" ); string yStr = _resourceManager.GetString( "y_title_def" ); //GraphPane graphPane = new GraphPane( rect, "Title", "X Axis", "Y Axis" ); GraphPane graphPane = new GraphPane( rect, titleStr, xStr, yStr ); using ( Graphics g = CreateGraphics() ) { graphPane.AxisChange( g ); //g.Dispose(); } _masterPane.Add( graphPane ); hScrollBar1.Minimum = 0; hScrollBar1.Maximum = 100; hScrollBar1.Value = 0; vScrollBar1.Minimum = 0; vScrollBar1.Maximum = 100; vScrollBar1.Value = 0; _xScrollRange = new ScrollRange( true ); _yScrollRangeList = new ScrollRangeList(); _y2ScrollRangeList = new ScrollRangeList(); _yScrollRangeList.Add( new ScrollRange( true ) ); _y2ScrollRangeList.Add( new ScrollRange( false ) ); _zoomState = null; _zoomStateStack = new ZoomStateStack(); }
/// <summary> /// The Copy Constructor /// </summary> /// <param name="rhs">The <see c_ref="ZoomState"/> object from which to copy</param> public ZoomState( ZoomState rhs ) { _xAxis = new ScaleState( rhs._xAxis ); _x2Axis = new ScaleState( rhs._x2Axis ); _yAxis = new ScaleStateList( rhs._yAxis ); _y2Axis = new ScaleStateList( rhs._y2Axis ); }
/// <summary> /// Handler for the "Undo All Zoom/Pan" context menu item. Restores the scale ranges to the values /// before all zoom and pan operations /// </summary> /// <remarks> /// This method differs from the <see c_ref="RestoreScale" /> method in that it sets the scales /// to their initial setting prior to any user actions. The <see c_ref="RestoreScale" /> method /// sets the scales to full auto mode (regardless of what the initial setting may have been). /// </remarks> /// <param name="primaryPane">The <see c_ref="GraphPane" /> object which is to be zoomed out</param> public void ZoomOutAll( GraphPane primaryPane ) { if ( primaryPane != null && !primaryPane.ZoomStack.IsEmpty ) { ZoomState.StateType type = primaryPane.ZoomStack.Top.Type; ZoomState oldState = new ZoomState( primaryPane, type ); //ZoomState newState = pane.ZoomStack.PopAll( pane ); ZoomState newState = null; if ( _isSynchronizeXAxes || _isSynchronizeYAxes ) { foreach ( GraphPane pane in _masterPane._paneList ) { ZoomState state = pane.ZoomStack.PopAll( pane ); if ( pane == primaryPane ) newState = state; } } else newState = primaryPane.ZoomStack.PopAll( primaryPane ); // Provide Callback to notify the user of zoom events if ( ZoomEvent != null ) ZoomEvent( this, oldState, newState ); Refresh(); } }
/// <summary> /// Handler for the "Set Scale to Default" context menu item. Sets the scale ranging to /// full auto mode for all axes. /// </summary> /// <remarks> /// This method differs from the <see c_ref="ZoomOutAll" /> method in that it sets the scales /// to full auto mode. The <see c_ref="ZoomOutAll" /> method sets the scales to their initial /// setting prior to any user actions (which may or may not be full auto mode). /// </remarks> /// <param name="primaryPane">The <see c_ref="GraphPane" /> object which is to have the /// scale restored</param> public void RestoreScale( GraphPane primaryPane ) { if ( primaryPane != null ) { //Go ahead and save the old zoomstates, which provides an "undo"-like capability //ZoomState oldState = primaryPane.ZoomStack.Push( primaryPane, ZoomState.StateType.Zoom ); ZoomState oldState = new ZoomState( primaryPane, ZoomState.StateType.Zoom ); using ( Graphics g = CreateGraphics() ) { if ( _isSynchronizeXAxes || _isSynchronizeYAxes ) { foreach ( GraphPane pane in _masterPane._paneList ) { pane.ZoomStack.Push( pane, ZoomState.StateType.Zoom ); ResetAutoScale( pane, g ); } } else { primaryPane.ZoomStack.Push( primaryPane, ZoomState.StateType.Zoom ); ResetAutoScale( primaryPane, g ); } // Provide Callback to notify the user of zoom events if ( ZoomEvent != null ) ZoomEvent( this, oldState, new ZoomState( primaryPane, ZoomState.StateType.Zoom ) ); //g.Dispose(); } Refresh(); } }
/// <summary> /// Default Constructor /// </summary> public GraphControl() { InitializeComponent(); // These commands do nothing, but they get rid of the compiler warnings for // unused events bool b = MouseDown == null || MouseUp == null || MouseMove == null; // Link in these events from the base class, since we disable them from this class. base.MouseDown += ZedGraphControl_MouseDown; base.MouseUp += ZedGraphControl_MouseUp; base.MouseMove += ZedGraphControl_MouseMove; //this.MouseWheel += new System.Windows.Forms.MouseEventHandler( this.ZedGraphControl_MouseWheel ); // Use double-buffering for flicker-free updating: SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer | ControlStyles.ResizeRedraw, true); //isTransparentBackground = false; //SetStyle( ControlStyles.Opaque, false ); SetStyle(ControlStyles.SupportsTransparentBackColor, true); //this.BackColor = Color.Transparent; _resourceManager = new ResourceManager("UIGraphLib.GraphLocale", Assembly.GetExecutingAssembly()); Rectangle rect = new Rectangle(0, 0, Size.Width, Size.Height); _masterPane = new MasterPane("", rect); _masterPane.Margin.All = 0; _masterPane.Title.IsVisible = false; string titleStr = _resourceManager.GetString("title_def"); string xStr = _resourceManager.GetString("x_title_def"); string yStr = _resourceManager.GetString("y_title_def"); //GraphPane graphPane = new GraphPane( rect, "Title", "X Axis", "Y Axis" ); GraphPane graphPane = new GraphPane(rect, titleStr, xStr, yStr); using (Graphics g = CreateGraphics()) { graphPane.AxisChange(g); //g.Dispose(); } _masterPane.Add(graphPane); hScrollBar1.Minimum = 0; hScrollBar1.Maximum = 100; hScrollBar1.Value = 0; vScrollBar1.Minimum = 0; vScrollBar1.Maximum = 100; vScrollBar1.Value = 0; _xScrollRange = new ScrollRange(true); _yScrollRangeList = new ScrollRangeList(); _y2ScrollRangeList = new ScrollRangeList(); _yScrollRangeList.Add(new ScrollRange(true)); _y2ScrollRangeList.Add(new ScrollRange(false)); _zoomState = null; _zoomStateStack = new ZoomStateStack(); }