10-17-2016 08:46 AM
Hi,
How can i make it, display the curve name in ToolTip, if i moved the mouse over the curve?
Or display the curve name fixedly above the curve?
And, how can i select a curve with mouse click?
Possible?
Regards,
Tamas
P.S.: VS2013 Community & MS2015 Standard
Solved! Go to Solution.
10-17-2016 11:06 AM
Using the tool tip logic from WPF graph display point value on hover, and the GetPlotAt function, here is an example that uses mouse clicks to select plots in a graph:
public partial class MainWindow : Window {
private Plot _selectedPlot;
public MainWindow( ) {
InitializeComponent( );
// (Optional) Turn on hit testing for drawn lines, in addition to actual data.
graph.HitTestMode = PlotHitTestMode.RenderedInterpolation;
// Update tool tips to show quickly and for a long time.
ToolTipService.SetInitialShowDelay( graph, 0 );
ToolTipService.SetShowDuration( graph, int.MaxValue );
// Populate graph with example plots and data.
graph.BeginInit( );
var plotBrushes = new[] { Brushes.Red, Brushes.Orange, Brushes.Green, Brushes.Blue };
for( int i = 0; i < plotBrushes.Length; ++i ) {
string label = "Plot " + (i + 1);
var renderer = new LinePlotRenderer { Stroke = plotBrushes[i] };
var plot = new Plot( label ) { Renderer = renderer };
graph.Plots.Add( plot );
graph.Data[i] = new[] { i, i + 1 };
}
graph.EndInit( );
// Monitor graph plot area for mouse clicks.
graph.PlotAreaMouseLeftButtonDown += OnPlotAreaMouseLeftButtonDown;
}
private void OnPlotAreaMouseLeftButtonDown( object sender, MouseButtonEventArgs e ) {
// Check if a new plot was shown at the current position.
Point screenPosition = e.GetPosition( graph );
var plot = (Plot)graph.GetPlotAt( screenPosition );
if( plot == null || plot == _selectedPlot )
return;
// De-select the previous plot, if it exists.
if( _selectedPlot != null ) {
((LinePlotRenderer)_selectedPlot.Renderer).StrokeThickness = 1.0;
((ToolTip)graph.ToolTip).IsOpen = false;
}
// Select the new plot, and show a tool tip.
_selectedPlot = plot;
((LinePlotRenderer)plot.Renderer).StrokeThickness = 2.0;
graph.ToolTip = new ToolTip { Content = string.Format( "'{0}' selected", plot.Label ), IsOpen = true };
}
}
Regarding "display the curve name fixedly above the curve", the easiest approach would probably be to use a PointAnnotation to display a label at a particular position (probably hiding the target and arrow).
10-24-2016 06:29 AM
Hi,
thanks for your reply!
It's working good!
Regards,
Tamas