C1Chart在WinForm平台下的同步(三):TriangleMarker同步

在上面的两篇文章中,我们分别讨论了C1Chart在WinForm平台下的同步(一):滚动条同步和C1Chart在WinForm平台下的同步(二):缩放同步,我们讨论了如何在运行时保持两个C1Chart的滚动条同步和缩放同步。本文是本系列的最后一篇,在前两个的基础上,继续深入讨论在WinForm平台下,保持拖拽标签Mark的同步。同样的,在文章的最后,会附上本文所用到的Demo。首先,都是一样的,在设计界面拖拽两个C1Chart,保持大小和位置的一致,以及给两个C1Chart导入相同的数据。代码参考:c1Chart1.SaveChartToFile("Chart1_Data.xml");c1Chart2.LoadChartFromFile("Chart1_Data.xml"); 接着,给C1Chart添加X轴的ValueLabel,让其显示成可移动的带三角标的Marker的样子,如图: 红色竖直带三角符号的线就是我们需要的Marker。有客户问,这条线是如何添加上去的,有没有内置的接口。其实,这就是我们经常用到的AxisX的ValueLabels,只是将其Appearance设置为TriangleMarker,并且将Moveable设置为true,这样就可以在X轴上显示一条Marker的线。注意:要将AxisX.AnnoMethod 属性设置为AnnotationMethodEnum.Mixed,我们设的Marker线才能显示出来。代码参考: this.c1Chart1.ChartArea.AxisX.ValueLabels.Add(1, "Marker"); this.c1Chart1.ChartArea.AxisX.ValueLabels[0].Appearance = ValueLabelAppearanceEnum.TriangleMarker; this.c1Chart1.ChartArea.AxisX.ValueLabels[0].Moveable = true; this.c1Chart1.ChartArea.AxisX.ValueLabels[0].GridLine = true; this.c1Chart1.ChartArea.AxisX.ValueLabels[0].Color = Color.Red; c1Chart1.ChartArea.AxisX.AnnoMethod = AnnotationMethodEnum.Mixed; 同样,通过LayoutLabels事件,获取其中一个的ValueLabel的NumericVaue,赋值给另一个C1Chart。

发布于 2014/11/29 00:00

ComponentOne Enterprise

在上面的两篇文章中,我们分别讨论了C1Chart在WinForm平台下的同步(一):滚动条同步C1Chart在WinForm平台下的同步(二):缩放同步,我们讨论了如何在运行时保持两个C1Chart的滚动条同步和缩放同步。

本文是本系列的最后一篇,在前两个的基础上,继续深入讨论在WinForm平台下,保持拖拽标签Mark的同步。同样的,在文章的最后,会附上本文所用到的Demo。

首先,都是一样的,在设计界面拖拽两个C1Chart,保持大小和位置的一致,以及给两个C1Chart导入相同的数据。

代码参考:

c1Chart1.SaveChartToFile("Chart1_Data.xml");
c1Chart2.LoadChartFromFile("Chart1_Data.xml");

 

接着,给C1Chart添加X轴的ValueLabel,让其显示成可移动的带三角标的Marker的样子,如图:

 

红色竖直带三角符号的线就是我们需要的Marker。有客户问,这条线是如何添加上去的,有没有内置的接口。

其实,这就是我们经常用到的AxisX的ValueLabels,只是将其Appearance设置为TriangleMarker,并且将Moveable设置为true,这样就可以在X轴上显示一条Marker的线。

注意:要将AxisX.AnnoMethod 属性设置为AnnotationMethodEnum.Mixed,我们设的Marker线才能显示出来。

代码参考:

  this.c1Chart1.ChartArea.AxisX.ValueLabels.Add(1, "Marker");
            this.c1Chart1.ChartArea.AxisX.ValueLabels[0].Appearance = ValueLabelAppearanceEnum.TriangleMarker;
            this.c1Chart1.ChartArea.AxisX.ValueLabels[0].Moveable = true;
            this.c1Chart1.ChartArea.AxisX.ValueLabels[0].GridLine = true;
            this.c1Chart1.ChartArea.AxisX.ValueLabels[0].Color = Color.Red;
            c1Chart1.ChartArea.AxisX.AnnoMethod = AnnotationMethodEnum.Mixed;

 

同样,通过LayoutLabels事件,获取其中一个的ValueLabel的NumericVaue,赋值给另一个C1Chart。

调用该事件代码:

  this.c1Chart1.LayoutLabels += new EventHandler(c1Chart1_LayoutLabels);
            this.c1Chart2.LayoutLabels += new EventHandler(c1Chart2_LayoutLabels);

 

在该事件中同步的处理代码:

  void c1Chart1_LayoutLabels(object sender, EventArgs e)
        {
            double currentValueLabel = this.c1Chart1.ChartArea.AxisX.ValueLabels[0].NumericValue;
            this.c1Chart2.ChartArea.AxisX.ValueLabels[0].NumericValue = currentValueLabel;
            this.c1Chart2.Refresh();
        }

        void c1Chart2_LayoutLabels(object sender, EventArgs e)
        {
            double currentValueLabel = this.c1Chart2.ChartArea.AxisX.ValueLabels[0].NumericValue;
            this.c1Chart1.ChartArea.AxisX.ValueLabels[0].NumericValue = currentValueLabel;
            this.c1Chart1.Refresh();

        }

 

通过以上代码,就能保证两个C1Chart在运行时,TriangleMarker保持同步。

例如,运行时,鼠标在C1Chart1上拖拽TriangleMarker发生了移动,C1Chart2会自动移动TriangleMarker保持同步。C1Chart2中也是同理。

最后,附上同步的Demo。

C1Chart_KeepMark.zip (12.50 kb)

 

如果你对C1Chart感兴趣,请到我们的官网下载最新版本:/developer/componentone-winform/controls/chart

如果你有疑问,可以到GCDN论坛获得技术支持:http://gcdn.grapecity.com.cn/showforum-68.html

 

本系列同步文章参考

C1Chart在WinForm平台下的同步(一):滚动条同步

C1Chart在WinForm平台下的同步(二):缩放同步

C1Chart在WinForm平台下的同步(三):TriangleMarker同步

ComponentOne Enterprise | 下载试用

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

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

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

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

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