コード例 #1
0
		private void RecalculateTimeScale()
		{
			//Lets do the calculation for all of the possible time scales and see which one fits bets		
			if(_bAutomaticTimeScale)
			{
				int iSize = (this.Orientation == enumOrientation.orHorizontal) ? Width : Height;
				int iOptimumScale = iSize/10;

				double dblZoomFactor = CalculateZoomFactor(iSize, enumTimeScale.MilliSeconds);
				int iMilliScale = DefaultScale(dblZoomFactor) / DefaultMajorInterval();
				int iMilliDiff = Math.Abs(iOptimumScale - iMilliScale);

				dblZoomFactor = CalculateZoomFactor(iSize, enumTimeScale.Seconds);
				int iSecScale = DefaultScale(dblZoomFactor) / DefaultMajorInterval();
				int iSecDiff = Math.Abs(iOptimumScale - iSecScale);

				dblZoomFactor = CalculateZoomFactor(iSize, enumTimeScale.Minutes);
				int iMinScale = DefaultScale(dblZoomFactor) / DefaultMajorInterval();
				int iMinDiff = Math.Abs(iOptimumScale - iMinScale);

				dblZoomFactor = CalculateZoomFactor(iSize, enumTimeScale.Hours);
				int iHourScale = DefaultScale(dblZoomFactor) / DefaultMajorInterval();
				int iHourDiff = Math.Abs(iOptimumScale - iHourScale);

				if( (iSecDiff < iMilliDiff) && (iSecDiff < iMinDiff) && (iSecDiff < iHourDiff) )
					_TimeScale = enumTimeScale.Seconds;
				else if( (iMinDiff < iMilliDiff) && (iMinDiff < iSecDiff) && (iMinDiff < iHourDiff) )
					_TimeScale = enumTimeScale.Minutes;
				else if( (iHourDiff < iMilliDiff) && (iHourDiff < iSecDiff) && (iHourDiff < iMinDiff) )
					_TimeScale = enumTimeScale.Hours;
				else
					_TimeScale = enumTimeScale.MilliSeconds;
					
				RecalculateZoom();
				RecalculateDivisions();
			}
		}
コード例 #2
0
		private string GetTimeScaleAbbreviation(enumTimeScale timeScale)
		{
			string strText="";
			switch(timeScale)
			{
				case enumTimeScale.MilliSeconds:
					strText = "(ms)";
					break;
				case enumTimeScale.Seconds:
					strText = "(s)";
					break;
				case enumTimeScale.Minutes:
					strText = "(m)";
					break;
				case enumTimeScale.Hours:
					strText = "(h)";
					break;
			}				
			return strText; 
		}
コード例 #3
0
		private double CalculateZoomFactor(int iSize, enumTimeScale timeScale)
		{
			double dblZoomFactor = ((float) iSize / (float) ((float) (_lEndMillisecond - _lStartMillisecond)/GetMillisecondScale(timeScale)));
			if(dblZoomFactor > 10000) dblZoomFactor = 10000;
			if(dblZoomFactor < 0.00001) dblZoomFactor = 0.00001;
			return dblZoomFactor;
		}
コード例 #4
0
		private int GetMillisecondScale(enumTimeScale timeScale)
		{
			int iScale = 1;
			switch(timeScale)
			{
				case enumTimeScale.MilliSeconds:
					iScale = 1;
					break;
				case enumTimeScale.Seconds:
					iScale = 1000;
					break;
				case enumTimeScale.Minutes:
					iScale = 60000;
					break;
				case enumTimeScale.Hours:
					iScale = 3600000;
					break;
			}				
			return iScale; 
		}