/// <summary>
        /// Sets the value of the scroll range properties (see <see cref="ScrollMinX" />,
        /// <see cref="ScrollMaxX" />, <see cref="YScrollRangeList" />, and
        /// <see cref="Y2ScrollRangeList" /> based on the actual range of the data for each corresponding <see cref="Axis" />.
        /// </summary>
        /// <remarks>
        /// This method is called automatically by <see cref="AxisChange" /> if
        /// <see cref="IsAutoScrollRange" />
        /// is true.  Note that this will not be called if you call AxisChange directly from the
        /// <see cref="GraphPane" />.  For example, zedGraphControl1.AxisChange() works properly, but zedGraphControl1.GraphPane.AxisChange() does not.
        /// </remarks>
        public void SetScrollRangeFromData()
        {
            if (this.GraphPane != null)
            {
                double grace = this.CalcScrollGrace(this.GraphPane.XAxis.Scale._rangeMin, this.GraphPane.XAxis.Scale._rangeMax);

                this._xScrollRange.Min = this.GraphPane.XAxis.Scale._rangeMin - grace;
                this._xScrollRange.Max = this.GraphPane.XAxis.Scale._rangeMax + grace;
                this._xScrollRange.IsScrollable = true;

                for (int i = 0; i < this.GraphPane.YAxisList.Count; i++)
                {
                    Axis axis = this.GraphPane.YAxisList[i];
                    grace = this.CalcScrollGrace(axis.Scale._rangeMin, axis.Scale._rangeMax);
                    ScrollRange range = new ScrollRange(
                        axis.Scale._rangeMin - grace,
                        axis.Scale._rangeMax + grace,
                        this._yScrollRangeList[i].IsScrollable);

                    if (i >= this._yScrollRangeList.Count)
                    {
                        this._yScrollRangeList.Add(range);
                    }
                    else
                    {
                        this._yScrollRangeList[i] = range;
                    }
                }

                for (int i = 0; i < this.GraphPane.Y2AxisList.Count; i++)
                {
                    Axis axis = this.GraphPane.Y2AxisList[i];
                    grace = this.CalcScrollGrace(axis.Scale._rangeMin, axis.Scale._rangeMax);
                    ScrollRange range = new ScrollRange(
                        axis.Scale._rangeMin - grace,
                        axis.Scale._rangeMax + grace,
                        this._y2ScrollRangeList[i].IsScrollable);

                    if (i >= this._y2ScrollRangeList.Count)
                    {
                        this._y2ScrollRangeList.Add(range);
                    }
                    else
                    {
                        this._y2ScrollRangeList[i] = range;
                    }
                }

                // this.GraphPane.CurveList.GetRange( out scrollMinX, out scrollMaxX,
                // 		out scrollMinY, out scrollMaxY, out scrollMinY2, out scrollMaxY2, false, false,
                // 		this.GraphPane );
            }
        }
示例#2
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();
        }