示例#1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ZoomState"/> class. 
 /// The Copy Constructor
 /// </summary>
 /// <param name="rhs">
 /// The <see cref="ZoomState"/> object from which to copy
 /// </param>
 public ZoomState(ZoomState rhs)
 {
     this._xAxis = new ScaleState(rhs._xAxis);
     this._x2Axis = new ScaleState(rhs._x2Axis);
     this._yAxis = new ScaleStateList(rhs._yAxis);
     this._y2Axis = new ScaleStateList(rhs._y2Axis);
 }
示例#2
0
        /// <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 cref="IsSynchronizeXAxes"/> and <see cref="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 cref="ZoomState.StateType"/> that describes the current operation
        /// </param>
        /// <returns>
        /// The <see cref="ZoomState"/> that corresponds to the
        /// <see paramref="primaryPane"/>.
        /// </returns>
        private ZoomState ZoomStateSave(GraphPane primaryPane, ZoomState.StateType type)
        {
            this.ZoomStateClear();

            if (this._isSynchronizeXAxes || this._isSynchronizeYAxes)
            {
                foreach (GraphPane pane in this._masterPane._paneList)
                {
                    ZoomState state = new ZoomState(pane, type);
                    if (pane == primaryPane)
                    {
                        this._zoomState = state;
                    }

                    this._zoomStateStack.Add(state);
                }
            }
            else
            {
                this._zoomState = new ZoomState(primaryPane, type);
            }

            return this._zoomState;
        }
示例#3
0
 /// <summary>Clear the collection of saved states.</summary>
 private void ZoomStateClear()
 {
     this._zoomStateStack.Clear();
     this._zoomState = null;
 }
示例#4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ZedGraphControl"/> class. Default Constructor
        /// </summary>
        public ZedGraphControl()
        {
            this.InitializeComponent();

            // These commands do nothing, but they get rid of the compiler warnings for
            // unused events
            bool b = this.MouseDown == null || this.MouseUp == null || this.MouseMove == null;

            // Link in these events from the base class, since we disable them from this class.
            base.MouseDown += this.ZedGraphControl_MouseDown;
            base.MouseUp += this.ZedGraphControl_MouseUp;
            base.MouseMove += this.ZedGraphControl_MouseMove;

            // this.MouseWheel += new System.Windows.Forms.MouseEventHandler( this.ZedGraphControl_MouseWheel );

            // Use double-buffering for flicker-free updating:
            this.SetStyle(
                ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer | ControlStyles.ResizeRedraw,
                true);

            // isTransparentBackground = false;
            // SetStyle( ControlStyles.Opaque, false );
            this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);

            // this.BackColor = Color.Transparent;
            var asm = Assembly.GetExecutingAssembly();
            var resNames = asm.GetManifestResourceNames();
            foreach (var res in resNames)
            {
                if (res.Contains("ZedGraphLocale"))
                {
                    var r = res.Substring(0, res.Length - 10);
                    this._resourceManager = new ResourceManager(r, asm);
                    break;
                }
            }

            Rectangle rect = new Rectangle(0, 0, this.Size.Width, this.Size.Height);
            this._masterPane = new MasterPane(string.Empty, rect);
            this._masterPane.Margin.All = 0;
            this._masterPane.Title.IsVisible = false;

            string titleStr = this._resourceManager.GetString("title_def");
            string xStr = this._resourceManager.GetString("x_title_def");
            string yStr = this._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 = this.CreateGraphics())
            {
                graphPane.AxisChange(g);

                // g.Dispose();
            }

            this._masterPane.Add(graphPane);

            this.hScrollBar1.Minimum = 0;
            this.hScrollBar1.Maximum = 100;
            this.hScrollBar1.Value = 0;

            this.vScrollBar1.Minimum = 0;
            this.vScrollBar1.Maximum = 100;
            this.vScrollBar1.Value = 0;

            this._xScrollRange = new ScrollRange(true);
            this._yScrollRangeList = new ScrollRangeList();
            this._y2ScrollRangeList = new ScrollRangeList();

            this._yScrollRangeList.Add(new ScrollRange(true));
            this._y2ScrollRangeList.Add(new ScrollRange(false));

            this._zoomState = null;
            this._zoomStateStack = new ZoomStateStack();
        }
        /// <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 cref="RestoreScale"/> method in that it sets the scales to their initial setting prior to any user actions.  The
        /// <see cref="RestoreScale"/> method sets the scales to full auto mode (regardless of what the initial setting may have been).
        /// </remarks>
        /// <param name="primaryPane">
        /// The <see cref="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 (this._isSynchronizeXAxes || this._isSynchronizeYAxes)
                {
                    foreach (GraphPane pane in this._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 (this.ZoomEvent != null)
                {
                    this.ZoomEvent(this, oldState, newState);
                }

                this.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 cref="ZoomOutAll"/> method in that it sets the scales to full auto mode.  The <see cref="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 cref="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 = this.CreateGraphics())
                {
                    if (this._isSynchronizeXAxes || this._isSynchronizeYAxes)
                    {
                        foreach (GraphPane pane in this._masterPane._paneList)
                        {
                            pane.ZoomStack.Push(pane, ZoomState.StateType.Zoom);
                            this.ResetAutoScale(pane, g);
                        }
                    }
                    else
                    {
                        primaryPane.ZoomStack.Push(primaryPane, ZoomState.StateType.Zoom);
                        this.ResetAutoScale(primaryPane, g);
                    }

                    // Provide Callback to notify the user of zoom events
                    if (this.ZoomEvent != null)
                    {
                        this.ZoomEvent(this, oldState, new ZoomState(primaryPane, ZoomState.StateType.Zoom));
                    }

                    // g.Dispose();
                }

                this.Refresh();
            }
        }