【发布时间】:2010-07-19 22:24:43
【问题描述】:
我正在使用 ZedGraph 在 C# 中绘制我的图。我需要知道鼠标单击了哪个条形图(在条形图中)。我怎样才能做到这一点?有什么方法可以按点获取条形图,例如更改条形图的颜色?
【问题讨论】:
我正在使用 ZedGraph 在 C# 中绘制我的图。我需要知道鼠标单击了哪个条形图(在条形图中)。我怎样才能做到这一点?有什么方法可以按点获取条形图,例如更改条形图的颜色?
【问题讨论】:
使用MouseClick事件,找到你点击的点的X和Y坐标:
zg1.MouseClick+=new MouseEventHandler(zg1_MouseClick3);
private void zg1_MouseClick3(object sender, MouseEventArgs e)
{
PointF pt = (PointF)e.Location;
double x,y;
((ZedGraphControl)sender).MasterPane[0].ReverseTransform(pt, out x, out y);
// Do something with X and Y
}
请注意,我假设我们在第一个窗格(索引 0)上操作,但如果不是您的情况,那么您将必须找到单击了哪个窗格(参见 example)。
当您拥有 X 和 Y 位置时,您应该能够轻松猜出点击了哪个栏,并使用该信息做任何您需要的事情。
【讨论】:
pane.X/YAxisScale 和pane.Chart.Rect 的pt 仿射变换来计算这个; ReverseTransform 将我的 6 行代码缩减为 1 行!顺便说一句,您可以通过ZedGraphControl.GraphPane 访问图表窗格,并且为了避免将发件人转换为您可以注册到ZedGraphControl.MouseDown/UpEvent,其代表将ZedGraphControl 作为第一个参数。