Click here to Skip to main content
15,886,724 members
Articles / Programming Languages / C#

PerformanceChart / ToolStripPerformanceChart controls with multiple time series

Rate me:
Please Sign up or sign in to vote.
4.89/5 (16 votes)
20 Aug 2007CPOL3 min read 65.3K   874   72  
A simple performance chart control with multiple series
#region Revision History
//**********************************************************************//
// CtrlSoft, Copyright �2001-2007, All rights reserved.
// 
// ToolStripPerformanceChart.cs
//
// Description:
//   - [TODO: Write the purpose of ToolStripPerformanceChart.cs.]
//
// Created On: 4/07/2007 4:43:31 PM
// Created By: Igor V. Velikorossov <mailto:igor@ctrlsoft.net> 
//**********************************************************************//

#endregion

using System;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;

namespace Ctrlsoft.Windows.Forms
{
	/// <summary>
	/// Represents a <see cref="PerformanceChart"/> control contained in a <see cref="StatusStrip"/>. 
	/// </summary>
	public partial class ToolStripPerformanceChart : ToolStripControlHost
	{
		#region public ToolStripPerformanceChart() : base(CreateControlInstance())
		/// <summary>
		/// Initializes a new instance of the <see cref="ToolStripPerformanceChart"/> class.
		/// </summary>
		public ToolStripPerformanceChart()
			: base(CreateControlInstance())
		{
			InitializeComponent();
			
		}
		#endregion // public ToolStripPerformanceChart()


		#region public override Image BackgroundImage
		/// <summary>
		/// Overrides <see cref="ToolStripItem.BackgroundImage"/>.
		/// </summary>
		[Browsable(false)]
		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
		[EditorBrowsable(EditorBrowsableState.Never)]
		public override Image BackgroundImage
		{
			get { return base.BackgroundImage; }
			set { base.BackgroundImage = value; }
		}
		#endregion // public override Image BackgroundImage

		#region public override ImageLayout BackgroundImageLayout
		/// <summary>
		/// Overrides <see cref="ToolStripItem.BackgroundImageLayout"/>.
		/// </summary>
		[Browsable(false)]
		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
		[EditorBrowsable(EditorBrowsableState.Never)]
		public override ImageLayout BackgroundImageLayout
		{
			get { return base.BackgroundImageLayout; }
			set { base.BackgroundImageLayout = value; }
		}
		#endregion // public override ImageLayout BackgroundImageLayout

		#region public PerformanceChartStyle ChartStyle
		/// <summary>
		/// Gets the access to the performance chart object's style.
		/// </summary>
		public PerformanceChartStyle ChartStyle
		{
			get
			{
				return this.PerformanceChart.ChartStyle;
			}
		}
		#endregion // public PerformanceChartStyle ChartStyle

		#region public PerformanceChart PerformanceChart
		/// <summary>
		/// Gets the access to the performance chart object.
		/// </summary>
		[Browsable(false)]
		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
		public PerformanceChart PerformanceChart
		{
			get
			{
				return (base.Control as PerformanceChart);
			}
		}
		#endregion // public PerformanceChart PerformanceChart

		#region public SerieCollection Series
		/// <summary>
		/// Gets the <see cref="SerieCollection">series</see>.
		/// </summary>
		[Category("Data")]
		[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
		[Description("Series collection.")]
		public SerieCollection Series
		{
			get { return this.PerformanceChart.Series; }
		}
		#endregion // public SerieCollection Series

		#region public override string Text
		[Browsable(false)]
		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
		[EditorBrowsable(EditorBrowsableState.Never)]
		public override string Text
		{
			get { return base.Control.Text; }
			set { base.Control.Text = value; }
		}
		#endregion // public override string Text


		#region protected override Padding DefaultMargin
		/// <summary>
		/// Overrides <see cref="ToolStripItem.DefaultMargin"/>.
		/// </summary>
		protected override Padding DefaultMargin
		{
			get
			{
				if ((base.Owner != null) && (base.Owner is StatusStrip))
				{
					return new Padding(1, 3, 1, 3);
				}
				return new Padding(1, 2, 1, 1);
			}
		}
		#endregion // protected override Padding DefaultMargin

		#region protected override Size DefaultSize
		/// <summary>
		/// Overrides <see cref="ToolStripItem.DefaultSize"/>.
		/// </summary>
		protected override Size DefaultSize
		{
			get
			{
				return new Size(16, 16);
			}
		}
		#endregion // protected override Size DefaultSize


		#region public override Size GetPreferredSize(Size constrainingSize)
		/// <summary>
		/// Retrieves the size of a rectangular area into which a control can be fitted. 
		/// </summary>
		public override Size GetPreferredSize(Size constrainingSize)
		{
			Size preferredSize = base.GetPreferredSize(constrainingSize);
			Console.WriteLine("preferredSize: " + preferredSize.ToString());

			if (preferredSize.Width < this.DefaultSize.Width)
				preferredSize.Width = this.DefaultSize.Width;
			if (preferredSize.Height < this.DefaultSize.Height)
				preferredSize.Height = this.DefaultSize.Height;

			return preferredSize;
		}
		#endregion // public override Size GetPreferredSize(Size constrainingSize)


		#region private static Control CreateControlInstance()
		private static Control CreateControlInstance()
		{
			PerformanceChart performanceChart					= new PerformanceChart();
			performanceChart.ChartStyle.ShowHorizontalGridLines = false;
			performanceChart.ChartStyle.ShowMaxMinValues		= false;
			performanceChart.ChartStyle.ShowVerticalGridLines	= false;
			performanceChart.Size								= new Size(16, 16);
			performanceChart.ScaleMode							= ScaleMode.Relative;
			performanceChart.ScaleGridOffset					= 0;
			performanceChart.ValueSpacing						= 1;

			Serie serie = new Serie();
			performanceChart.Series.Add(serie);
			serie.SerieStyle.DrawAverageLine 	= false;
			serie.SerieStyle.DrawAverageValue	= false;

			return performanceChart;
		}
		#endregion // private static Control CreateControlInstance()

 
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
Australia Australia
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions