/// <summary> /// Constructor for deserializing objects /// </summary> /// <param name="info">A <see cref="SerializationInfo"/> instance that defines the serialized data /// </param> /// <param name="context">A <see cref="StreamingContext"/> instance that contains the serialized data /// </param> protected GraphObj( SerializationInfo info, StreamingContext context ) { // The schema value is just a file version parameter. You can use it to make future versions // backwards compatible as new member variables are added to classes int sch = info.GetInt32( "schema" ); _location = (Location) info.GetValue( "location", typeof(Location) ); _isVisible = info.GetBoolean( "isVisible" ); Tag = info.GetValue( "Tag", typeof(object) ); _zOrder = (ZOrder) info.GetValue( "zOrder", typeof(ZOrder) ); _isClippedToChartRect = info.GetBoolean( "isClippedToChartRect" ); _link = (Link) info.GetValue( "link", typeof( Link ) ); }
/// <summary> /// Search through the <see cref="GraphObjList" /> and <see cref="CurveList" /> for /// items that contain active <see cref="Link" /> objects. /// </summary> /// <param name="mousePt">The mouse location where the click occurred</param> /// <param name="g">An appropriate <see cref="Graphics" /> instance</param> /// <param name="scaleFactor">The current scaling factor for drawing operations.</param> /// <param name="source">The clickable object that was found. Typically a type of /// <see cref="GraphObj" /> or a type of <see cref="CurveItem" />.</param> /// <param name="link">The <see cref="Link" /> instance that is contained within /// the <see paramref="source" /> object.</param> /// <param name="index">An index value, indicating which point was clicked for /// <see cref="CurveItem" /> type objects.</param> /// <returns>returns true if a clickable link was found under the /// <see paramref="mousePt" />, or false otherwise. /// </returns> public bool FindLinkableObject( PointF mousePt, Graphics g, float scaleFactor, out object source, out Link link, out int index ) { index = -1; // First look for graph objects that lie in front of the data points foreach ( GraphObj graphObj in _graphObjList ) { link = graphObj._link; bool inFront = graphObj.IsInFrontOfData; if ( link.IsActive ) { if ( graphObj.PointInBox( mousePt, this, g, scaleFactor ) ) { source = graphObj; return true; } } } // Second, look at the curve data points foreach ( CurveItem curve in _curveList ) { link = curve._link; if ( link.IsActive ) { CurveItem nearestCurve; if ( FindNearestPoint( mousePt, curve, out nearestCurve, out index ) ) { source = curve; return true; } } } // Third, look for graph objects that lie behind the data points foreach ( GraphObj graphObj in _graphObjList ) { link = graphObj._link; bool inFront = graphObj.IsInFrontOfData; if ( link.IsActive ) { if ( graphObj.PointInBox( mousePt, this, g, scaleFactor ) ) { source = graphObj; return true; } } } source = null; link = null; index = -1; return false; }
/// <summary> /// Constructor that creates a <see cref="GraphObj"/> with the specified /// position, <see cref="CoordType"/>, <see cref="AlignH"/>, and <see cref="AlignV"/>. /// Other properties are set to default values as defined in the <see cref="Default"/> class. /// </summary> /// <remarks> /// The four coordinates define the starting point and ending point for /// <see cref="ArrowObj"/>'s, or the topleft and bottomright points for /// <see cref="ImageObj"/>'s. For <see cref="GraphObj"/>'s that only require /// one point, the <see paramref="x2"/> and <see paramref="y2"/> values /// will be ignored. The units of the coordinates are specified by the /// <see cref="ZedGraph.Location.CoordinateFrame"/> property. /// </remarks> /// <param name="x">The x position of the item.</param> /// <param name="y">The y position of the item.</param> /// <param name="x2">The x2 position of the item.</param> /// <param name="y2">The x2 position of the item.</param> /// <param name="coordType">The <see cref="CoordType"/> enum value that /// indicates what type of coordinate system the x and y parameters are /// referenced to.</param> /// <param name="alignH">The <see cref="ZedGraph.AlignH"/> enum that specifies /// the horizontal alignment of the object with respect to the (x,y) location</param> /// <param name="alignV">The <see cref="ZedGraph.AlignV"/> enum that specifies /// the vertical alignment of the object with respect to the (x,y) location</param> public GraphObj( double x, double y, double x2, double y2, CoordType coordType, AlignH alignH, AlignV alignV ) { _isVisible = true; _isClippedToChartRect = Default.IsClippedToChartRect; this.Tag = null; _zOrder = ZOrder.A_InFront; _location = new Location( x, y, x2, y2, coordType, alignH, alignV ); _link = new Link(); }
/// <summary> /// The Copy Constructor /// </summary> /// <param name="rhs">The <see cref="GraphObj"/> object from which to copy</param> public GraphObj( GraphObj rhs ) { // Copy value types _isVisible = rhs.IsVisible; _isClippedToChartRect = rhs._isClippedToChartRect; _zOrder = rhs.ZOrder; // copy reference types by cloning if ( rhs.Tag is ICloneable ) this.Tag = ((ICloneable) rhs.Tag).Clone(); else this.Tag = rhs.Tag; _location = rhs.Location.Clone(); _link = rhs._link.Clone(); }
/// <summary> /// The Copy Constructor /// </summary> /// <param name="rhs">The <see cref="Link"/> object from which to copy</param> public Link( Link rhs ) { // Copy value types _title = rhs._title; _url = rhs._url; _target = rhs._target; _isEnabled = false; // copy reference types by cloning if ( rhs.Tag is ICloneable ) this.Tag = ((ICloneable) rhs.Tag).Clone(); else this.Tag = rhs.Tag; }
private bool z1_LinkEvent( ZedGraphControl sender, GraphPane pane, object source, Link link, int index ) { if ( source is CurveItem ) MessageBox.Show( "You clicked on point #" + index.ToString() + " of curve '" + link.Title + "'" ); else MessageBox.Show( "You clicked on a non-curve item" ); return false; }
/// <summary> /// Constructor for deserializing objects /// </summary> /// <param name="info">A <see cref="SerializationInfo"/> instance that defines the serialized data /// </param> /// <param name="context">A <see cref="StreamingContext"/> instance that contains the serialized data /// </param> protected CurveItem( SerializationInfo info, StreamingContext context ) { // The schema value is just a file version parameter. You can use it to make future versions // backwards compatible as new member variables are added to classes int sch = info.GetInt32( "schema" ); _label = (Label) info.GetValue( "label", typeof(Label) ); _isY2Axis = info.GetBoolean( "isY2Axis" ); if ( sch >= 11 ) _isX2Axis = info.GetBoolean( "isX2Axis" ); else _isX2Axis = false; _isVisible = info.GetBoolean( "isVisible" ); _isOverrideOrdinal = info.GetBoolean( "isOverrideOrdinal" ); // Data Points are always stored as a PointPairList, regardless of the // actual original type (which could be anything that supports IPointList). _points = (PointPairList) info.GetValue( "points", typeof(PointPairList) ); Tag = info.GetValue( "Tag", typeof(object) ); _yAxisIndex = info.GetInt32( "yAxisIndex" ); _link = (Link) info.GetValue( "link", typeof(Link) ); }
/// <summary> /// The Copy Constructor /// </summary> /// <param name="rhs">The CurveItem object from which to copy</param> public CurveItem( CurveItem rhs ) { _label = rhs._label.Clone(); _isY2Axis = rhs.IsY2Axis; _isX2Axis = rhs.IsX2Axis; _isVisible = rhs.IsVisible; _isOverrideOrdinal = rhs._isOverrideOrdinal; _yAxisIndex = rhs._yAxisIndex; if ( rhs.Tag is ICloneable ) this.Tag = ((ICloneable) rhs.Tag).Clone(); else this.Tag = rhs.Tag; _points = (IPointList) rhs.Points.Clone(); _link = rhs._link.Clone(); }
/// <summary> /// Internal initialization routine thats sets some initial values to defaults. /// </summary> /// <param name="label">A string label (legend entry) for this curve</param> private void Init( string label ) { _label = new Label( label, null ); _isY2Axis = false; _isX2Axis = false; _isVisible = true; _isOverrideOrdinal = false; this.Tag = null; _yAxisIndex = 0; _link = new Link(); }