Winforms Chart以Tooltip方式展示可移动的Y轴

Winforms Charts提供了tooltips的支持。本文我们讨论为chart tooltip显示可移动的Y轴的方式。实现这个非常简单。我们需要捕获数据点,然后在chart上创建Y轴。开始之前,我们需要捕获鼠标在chart上移动时候的鼠标位置。我们通过C1Chart的Move事件保存X、Y坐标。代码如下: private void c1Chart1_MouseMove(object sender, MouseEventArgs e){ X = e.X; Y = e.X; Invalidate(true);}

发布于 2014/08/29 00:00

ComponentOne Enterprise

Winforms Charts提供了tooltips的支持。本文我们讨论为chart tooltip显示可移动的Y轴的方式。

实现这个非常简单。我们需要捕获数据点,然后在chart上创建Y轴。

开始之前,我们需要捕获鼠标在chart上移动时候的鼠标位置。我们通过C1Chart的Move事件保存X、Y坐标。

代码如下: 

private void c1Chart1_MouseMove(object sender, MouseEventArgs e)
{
 X = e.X;
 Y = e.X;
 Invalidate(true);
}

 

 下一步就是创建一个展示在图表上的仿Y轴的线。这就需要处理C1Chart的Paint事件,然后使用Graphics.DrawLine方法画线。

Graphics g = e.Graphics;
g.DrawLine(pen, X, c1Chart1.ChartArea.PlotArea.Location.Y, X, c1Chart1.ChartArea.PlotArea.Location.Y +c1Chart1.ChartArea.PlotArea.Size.Height);

 

接着我们需要通过Chartdataseries points计算这条线,然后在这条仿Y轴上画出值。所以Paint事件里的代码如下:

private void c1Chart1_Paint(object sender, PaintEventArgs e)
{
 if (X > 75 && X < 700)
 {
 Graphics g = e.Graphics;
 g.DrawLine(pen, X, c1Chart1.ChartArea.PlotArea.Location.Y, X, c1Chart1.ChartArea.PlotArea.Location.Y + c1Chart1.ChartArea.PlotArea.Size.Height);
 double numofpoints = c1Chart1.ChartArea.AxisY.Max - c1Chart1.ChartArea.AxisY.Min;
 double unitmajor = c1Chart1.ChartArea.AxisY.UnitMajor;
 double ymin = c1Chart1.ChartArea.AxisY.Min;
 
 float x = 0, ypoint = 0;
 
 for (int i = 0; i <= (int)numofpoints / unitmajor; i++)
 {
 c1Chart1.ChartGroups[0].DataCoordToCoord(0, ymin + (i * unitmajor), ref x, ref ypoint);
 g.DrawString((ymin + (i * unitmajor)).ToString(), new Font("Microsoft Sans Serif", 8.25f), new SolidBrush(Color.Red), X, ypoint - 5);
 ypoint = ypoint - (25 * (float)unitmajor);
 }
 
 }

 

 现在,当鼠标在c1chart上移动的时候,我们可以看到一条可以移动的Y轴以Tooltip的方式展现。

 

下载本文示例:

 

 

Sample_MovableAxis.zip (14.59 kb)

ComponentOne Enterprise | 下载试用

ComponentOne 是一套专注于企业 .NET开发、支持 .NET Core 平台,并完美集成于 Visual Studio 的第三方控件集,包含 300 多种 .NET开发控件,提供表格数据管理、数据可视化、报表和文档、日程安排、输入和编辑、导航和布局、系统提升工具等七大功能,被誉为“.NET开发的‘瑞士军刀’”。

ComponentOne 为您提供专业的产品咨询服务,并由技术支持工程师为您1对1解答。>> 发帖提问

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态