IMSL C# Programmers Guide
|
Actions >> Picking |
Picking
The pick mechanism allows mouse events to be associated with chart nodes. The pick mechanism follows the .NET delegate pattern.
A PickEventHandler
is added to a chart node, using the nodes
PickPerformed
method using the delegate += syntax to define the method to be
called when the event occurs.
A pick is fired by calling the method Pick(MouseEventArgs)
in the top-level
Chart
node. Normally this is done in response to a mouse click. Mouse clicks can
be detected by adding a MouseEventHandler
to the MouseDown
property of the
charts container.
Example
In this example, when a bar is clicked it toggles its color between blue and red.
A MouseEventHandler
is added to the Panel
, which calls method
Chart.Pick
(MouseEventArgs
).
The pick delegate is added to the chart node bar. This means that it is active for that node and its children but is not active for the axes and other nodes
(Download Code)
using System.Windows.Forms; using System.Drawing; using Imsl.Chart2D; public class SamplePick : FrameChart { private Chart chart; private double[] x = new double[]{0, 1, 2, 3}; private double[] y = new double[]{4, 1, 2, 5}; public SamplePick() { chart = this.Chart; AxisXY axis = new AxisXY(chart); Bar bar = new Bar(axis, x, y); bar.BarType = Bar.BAR_TYPE_VERTICAL; bar.SetLabels(new string[]{A,B,C, D}); bar.FillColor = Color.Blue; // Add the event handler delegates bar.PickPerformed += new PickEventHandler(SamplePick_PickPerformed); this.Panel.MouseDown += new MouseEventHandler(SamplePick_MouseDown); } private void SamplePick_MouseDown(object sender, MouseEventArgs e) { chart.Pick(e); } private void SamplePick_PickPerformed(PickEventArgs param) { ChartNode node = param.Node; int count = node.GetIntegerAttribute(pick.count, 0); count++; node.SetAttribute(pick.count, (System.Object) (count)); // Change the bars color depending on the number of times // it has been picked. Color color = ((count % 2 == 0) ? Color.Blue : Color.Red); node.FillColor = color; Refresh(); } public static void Main(string[] argv) { System.Windows.Forms.Application.Run(new SamplePick()); } }
© Visual Numerics, Inc. All rights reserved. |