The data pan tool allows the user to interactively modify the current zoom range by pressing the mouse over the chart and then dragging.
Creating a Data Pan Tool
The following code snippet adds a data pan tool to the Tools collection of the control:
C# |
Copy Code
|
---|---|
NThinChartControl1.Controller.Tools.Add(new NDataPanTool()); |
Visual Basic |
Copy Code
|
---|---|
NThinChartControl1.Controller.Tools.Add(New NDataPanTool()) |
Setting The Zooming Axes
The data pan tool by default allows panning of the PrimaryX and PrimaryY axes of the currently selected chart. To modify this you need to change the XAxisId or YAxisId properties. The following code snippet tells the data pan to use the Secondary Y axis for panning:
C# |
Copy Code
|
---|---|
NDataZoomTool dataZoomTool = new NDataZoomTool(); |
Visual Basic |
Copy Code
|
---|---|
Dim dataZoomTool As New NDataZoomTool() |
Data Pan Sample
The following code snippet shows how to create a simple XY scatter chart with data panning and scrolling. The example intercepts the DataPanCallback in order to update the label with the current X / Y ranges:
C# |
Copy Code
|
---|---|
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!NThinChartControl1.Initialized) { NThinChartControl1.Panels.Clear(); // add a label NLabel label = new NLabel(); label.Dock = DockStyle.Top; NThinChartControl1.Panels.Add(label); // get the default chart NCartesianChart chart = new NCartesianChart(); NThinChartControl1.Panels.Add(chart); chart.Dock = DockStyle.Fill; chart.BoundsMode = BoundsMode.Stretch; chart.Margins = new NMarginsL(10, 10, 10, 10); chart.Axis(StandardAxis.PrimaryX).ScaleConfigurator = new NLinearScaleConfigurator(); chart.Axis(StandardAxis.PrimaryX).ScrollBar.Visible = true; chart.Axis(StandardAxis.PrimaryY).ScrollBar.Visible = true; // create a XY scatter point NPointSeries point = new NPointSeries(); chart.Series.Add(point); point.UseXValues = true; point.DataLabelStyle.Visible = false; // add some random data Random rand = new Random(); for (int i = 0; i < 100; i++) { point.Values.Add(rand.Next(100)); point.XValues.Add(rand.Next(100)); } // zoom the axes initially NThinChartControl1.RecalcLayout(); chart.Axis(StandardAxis.PrimaryX).PagingView.ZoomIn(new NRange1DD(0, 10), 0.0001); chart.Axis(StandardAxis.PrimaryY).PagingView.ZoomIn(new NRange1DD(0, 10), 0.0001); // hide the scrollbars chart.Axis(StandardAxis.PrimaryX).ScrollBar.Visible = false; chart.Axis(StandardAxis.PrimaryY).ScrollBar.Visible = false; label.Text = FormatLabel(NThinChartControl1, chart.Axis(StandardAxis.PrimaryX), chart.Axis(StandardAxis.PrimaryY)); // enable tiling NThinChartControl1.ServerSettings.EnableTiledZoom = true; // set the active chart NThinChartControl1.Controller.SetActivePanel(chart); // add data zoom tool NDataPanTool dataZoomTool = new NDataPanTool(); dataZoomTool.DataPanCallback = new DataPanCallback(); NThinChartControl1.Controller.Tools.Add(dataZoomTool); } } private static string FormatLabel(NThinChartControl control, NAxis horzAxis, NAxis vertAxis) { control.RecalcLayout(); NRange1DD xRange = horzAxis.Scale.RulerRange; NRange1DD yRange = vertAxis.Scale.RulerRange; return "XBegin[" + xRange.Begin.ToString("0.0") + "], XEnd [" + xRange.End.ToString("0.0") + "], YBegin [" + yRange.Begin.ToString("0.0") + "], YEnd [" + yRange.End.ToString("0.0") + "]"; } [Serializable] class DataPanCallback : INDataPanCallback { #region INDataPanCallback Members public void OnDataPan(NThinChartControl control, NCartesianChart chart, NAxis horzAxis, NAxis vertAxis) { control.Labels[0].Text = FormatLabel(control, horzAxis, vertAxis); } #endregion } } |