Waveformgraph for MeasurementStudioVS2003 系列
Waveformgraph Sample:
这个控件的使用真是奇怪,官方给的帮助性文档很少,进来有一个项目要用到此控件,在此小议,如同所有做NET项目的人一样,我上网大肆搜罗一盘,包括他的论坛里所有的相关代码,那个累啊~,现在还没有大的进展,因为对控件本身还没有充分了解。
1、光标随鼠标移动
MeasurementStudioVS2003本身不提供API,要通过一系列函数和事件的操作才能达到这个效果 如下代码
此代码来自官方论坛采集
/Files/slave2/TrackCursorTest.zip
这个控件的使用真是奇怪,官方给的帮助性文档很少,进来有一个项目要用到此控件,在此小议,如同所有做NET项目的人一样,我上网大肆搜罗一盘,包括他的论坛里所有的相关代码,那个累啊~,现在还没有大的进展,因为对控件本身还没有充分了解。
1、光标随鼠标移动
MeasurementStudioVS2003本身不提供API,要通过一系列函数和事件的操作才能达到这个效果 如下代码
private void waveformGraph1_PlotAreaMouseMove ( object sender, MouseEventArgs e )
{
double xValue, yValue ;
InverseMap ( waveformGraph1.PlotAreaBounds, e.X, e.Y, xAxis1, yAxis1, out xValue, out yValue ) ;
xyCursor1.XPosition = xValue ;
xyCursor1.YPosition = yValue ;
}
private Range GetScaledLogRange ( Range range, double logBase )
{
Range scaledRange = range ;
if ( scaledRange.Minimum <= 0 )
scaledRange = new Range ( Math.Pow ( logBase, -1 ), scaledRange.Maximum ) ;
scaledRange = new Range ( Math.Log ( scaledRange.Minimum, logBase ), Math.Log ( scaledRange.Maximum, logBase ) ) ;
return scaledRange ;
}
private void InverseMap ( Rectangle plotAreaBounds, int x, int y, XAxis xAxis, YAxis yAxis,
out double xValue, out double yValue )
{
if ( xAxis.ScaleType == ScaleType.Logarithmic )
{
Range scaledRange = GetScaledLogRange ( xAxis.Range, xAxis.LogBase ) ;
xValue = Math.Pow ( xAxis.LogBase, ( ( scaledRange.Maximum - scaledRange.Minimum ) *
( ( x - plotAreaBounds.Left ) / ( double ) ( plotAreaBounds.Right - plotAreaBounds.Left ) ) ) + scaledRange.Minimum ) ;
}
else
{
xValue = ( ( xAxis.Range.Maximum - xAxis.Range.Minimum ) *
( ( x - plotAreaBounds.Left ) / ( double ) ( plotAreaBounds.Right - plotAreaBounds.Left ) ) ) + xAxis.Range.Minimum ;
}
if ( yAxis.ScaleType == ScaleType.Logarithmic )
{
Range scaledRange = GetScaledLogRange ( yAxis.Range, yAxis.LogBase ) ;
yValue = Math.Pow ( yAxis.LogBase, ( ( scaledRange.Maximum - scaledRange.Minimum ) *
( ( plotAreaBounds.Bottom - y ) / ( double ) ( plotAreaBounds.Bottom - plotAreaBounds.Top ) ) ) + scaledRange.Minimum ) ;
}
else
{
yValue = ( ( yAxis.Range.Maximum - yAxis.Range.Minimum ) *
( ( plotAreaBounds.Bottom - y ) / ( double ) ( plotAreaBounds.Bottom - plotAreaBounds.Top ) ) ) + yAxis.Range.Minimum ;
}
}
{
double xValue, yValue ;
InverseMap ( waveformGraph1.PlotAreaBounds, e.X, e.Y, xAxis1, yAxis1, out xValue, out yValue ) ;
xyCursor1.XPosition = xValue ;
xyCursor1.YPosition = yValue ;
}
private Range GetScaledLogRange ( Range range, double logBase )
{
Range scaledRange = range ;
if ( scaledRange.Minimum <= 0 )
scaledRange = new Range ( Math.Pow ( logBase, -1 ), scaledRange.Maximum ) ;
scaledRange = new Range ( Math.Log ( scaledRange.Minimum, logBase ), Math.Log ( scaledRange.Maximum, logBase ) ) ;
return scaledRange ;
}
private void InverseMap ( Rectangle plotAreaBounds, int x, int y, XAxis xAxis, YAxis yAxis,
out double xValue, out double yValue )
{
if ( xAxis.ScaleType == ScaleType.Logarithmic )
{
Range scaledRange = GetScaledLogRange ( xAxis.Range, xAxis.LogBase ) ;
xValue = Math.Pow ( xAxis.LogBase, ( ( scaledRange.Maximum - scaledRange.Minimum ) *
( ( x - plotAreaBounds.Left ) / ( double ) ( plotAreaBounds.Right - plotAreaBounds.Left ) ) ) + scaledRange.Minimum ) ;
}
else
{
xValue = ( ( xAxis.Range.Maximum - xAxis.Range.Minimum ) *
( ( x - plotAreaBounds.Left ) / ( double ) ( plotAreaBounds.Right - plotAreaBounds.Left ) ) ) + xAxis.Range.Minimum ;
}
if ( yAxis.ScaleType == ScaleType.Logarithmic )
{
Range scaledRange = GetScaledLogRange ( yAxis.Range, yAxis.LogBase ) ;
yValue = Math.Pow ( yAxis.LogBase, ( ( scaledRange.Maximum - scaledRange.Minimum ) *
( ( plotAreaBounds.Bottom - y ) / ( double ) ( plotAreaBounds.Bottom - plotAreaBounds.Top ) ) ) + scaledRange.Minimum ) ;
}
else
{
yValue = ( ( yAxis.Range.Maximum - yAxis.Range.Minimum ) *
( ( plotAreaBounds.Bottom - y ) / ( double ) ( plotAreaBounds.Bottom - plotAreaBounds.Top ) ) ) + yAxis.Range.Minimum ;
}
}
此代码来自官方论坛采集
/Files/slave2/TrackCursorTest.zip
作者:拒绝潜水的鱼
出处:http://slave2.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://slave2.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。