C#气泡提示问题
发布网友
发布时间:2022-05-10 12:57
我来回答
共1个回答
热心网友
时间:2023-10-09 20:31
不难,不使用第三方控件,仅依靠.NET自身的Chart就可以。
我们来一步步完成一个例子。只是演示,细节的修改请自行完成(比如纵轴的尺度标签,轴线的箭头)
拖一个chart控件到设计器界面的新窗体,dock填满
在右侧找到Series(图表序列集合)属性,展开
在弹出的选项界面中修改MarkerBorderColor为Blue(数据点有蓝色的边框),修改MarkerSize=9(圆大一点),修改MarkerWidth=3(边框粗一点),MarkerColor=White(白色的圆心),ChartType=Line(让数据点之前用直线相连)
继续展开Points选项,随便添加几个数据点(这个可以在代码中写),每个点的XValue(横轴坐标值,间隔默认是1哦)、YValues(纵轴坐标值,写一个就好)。我的例子加了{1,20},{3,50},{5,19},{6,90},{7,55}
再丢一个label上去随便画画边框底色神马的。
找到Chart1的MouseMove事件,双击,写事件处理代码:
private void chart1_MouseMove(object sender, MouseEventArgs e)
{
//捕捉数据点,范围在数据点X+-2,Y+-2
foreach (var p in chart1.Series[0].Points)
{
double x = chart1.ChartAreas[0].AxisX.ValueToPixelPosition(p.XValue);
double y = chart1.ChartAreas[0].AxisY.ValueToPixelPosition(p.YValues[0]);
//如果鼠标坐标距离数据点较近,显示我们的提示label
if (e.X < x + 4 && x - 4 < e.X && e.Y < y + 4 && y - 4 < e.Y)
{
p.MarkerBorderColor = Color.Red;
//在这里添加并显示你的控件用于提示。当前数据点坐标折算到控件内就是(x,y)
label1.Text = "这里是" + ((int)x).ToString() + "," + ((int)y).ToString();
label1.Location = new Point((int)(x+12), (int)(y+15));
}
else
p.MarkerBorderColor = Color.Blue;
}
}
运行,你会得到一个鼠标靠近数据点时数据点边框变红且弹出一个label的折线图表。如图。
结束