Chart控件本身功能强大,应用广泛,因此其属性、方法也很多。
此处介绍在很多应用中需要查看鼠标位置处坐标值的一些方法

1,调用Chart事件  GetToolTip

利用ToolTipEventArgs ,将ToolTipEventArgs的Text属性赋值即可实现,优点是非常简单,无需其他步骤,但其因为用到HitTest方法,只能获取序列点上的坐标值,不能获得“空白”位置的值 

        private void chart_Wave1_GetToolTipText(object sender, ToolTipEventArgs e)
{
if (e.HitTestResult.ChartElementType == ChartElementType.DataPoint)
{
this.Cursor = Cursors.Cross;
int i = e.HitTestResult.PointIndex;
DataPoint dp = e.HitTestResult.Series.Points[i];
e.Text = string.Format("数值:{1:F3}" + e.HitTestResult.Series.ChartArea + " \n日期:{0}", DateTime.FromOADate(dp.XValue), dp.YValues[]);
}
else
{
this.Cursor = Cursors.Default;
}
}

  

2.利用Chart的MouseMove事件和Chart方法 HitTest

特点是可以获取鼠标值,同样因为用到HitTest方法,只能获取序列上序列点处的坐标值,且需要自我实现值的显示

        private void chart_Wave1_MouseMove(object sender, MouseEventArgs e)
{
HitTestResult myTestResult= chart_Wave1.HitTest(e.X,e.Y);
if (myTestResult.ChartElementType == ChartElementType.DataPoint)
{
this.Cursor = Cursors.Cross;
int i = myTestResult.PointIndex;
DataPoint dp = myTestResult.Series.Points[i]; double doubleXValue= (dp.XValue);
double doubleYValue = dp.YValues[];
//自我实现值的显示
}
else
{
this.Cursor = Cursors.Default;
}
}

3.利用Chart的MouseMove事件和获取鼠标处坐标实现

根据鼠标位置自动转化为Chart控件ChartArea上的坐标值,再根据序列上(可以看成数组),可以找到每个序列点的坐标值,从而可以确定鼠标所在点在哪两个序列点之间,再利用线性插值或其他插值算法,计算出该点的值。
特点,可以查找序列上任意位置的值,但实现相对复杂。

4.自动光标的实现

引用第三中方法其实只用知道X的位置就可以遍历找出序列上该位置处的Y值,在很多情况下,需要添加自动光
标,自动获取光标与序列焦点处的坐标值。因此还涉及到光标的实现,本人之前也尝试过一些方法,

    • 新添加一条直线序列来代替,在鼠标移动时需要删除之前的“序列光标”再添加新的“序列光标”,不够流畅,效果不理想;
    • 尝试用 GDI绘制一条直线作为光标,需要不能的刷新,效果也不太理想;
    • 最后GDI+异或绘制线条的方式,可以很好的解决这个问题,但仍有一个问题就是,在序列主动刷新(比如显示实时数据波形,2秒钟刷新一次)的时候,容易留下上次的光标痕迹,大家可以试试效果。

winform Chart控件 获取鼠标处坐标值方法的更多相关文章

  1. 使用WinForm Chart控件 制作饼装,柱状,折线图

    http://blog.csdn.net/dream2050csdn/article/details/53510340 chart控件的属性很多,主要用到Chart控件图表区域的属性有五个属性 1.A ...

  2. Chart控件,鼠标选择区域,可以局部放大缩小

    例子: 代码设置部分: chartArea1.CursorX.Interval = 0D; chartArea1.CursorX.IntervalOffsetType = System.Windows ...

  3. PyQt学习随笔:ListView控件获取当前选择项的方法

    通过currentIndex()可以获取listView控件的当前选择元素,如果选择了多个,则可以通过selectedIndexes()来获取选择的元素,不过这两个函数返回的是元素数据,而不是索引编号 ...

  4. WPF 使用WinForm Chart控件

    第一步:  页面 首先引用命名空间 xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFor ...

  5. Winform Chart 控件读取datatable后显示图表

    private void Button2_Click(object sender, EventArgs e) { DataTable table = new DataTable(); this.cha ...

  6. Winform(C#)中Chart控件鼠标点击显示波形上相应点对应坐标轴的x,y值

    方法一:鼠标点击波形 鼠标点击波形,显示点击位置的x,y值 private void chart1_MouseClick(object sender, MouseEventArgs e)  //cha ...

  7. C# WinForm开发系列之c# 通过.net自带的chart控件绘制饼图,柱形图和折线图的基础使用和扩展

    一.需要实现的目标是: 1.将数据绑定到pie的后台数据中,自动生成饼图. 2.生成的饼图有详细文字的说明. 1.设置chart1的属性Legends中默认的Legend1的Enable为false: ...

  8. C# Winform WebBrowser控件

    C# WinForm WebBrowser 1.主要用途:使用户可以在窗体中导航网页. 2.注意:WebBrowser 控件会占用大量资源.使用完该控件后一定要调用 Dispose 方法,以便确保及时 ...

  9. 用Chart控件绘制动态图表

    进行程序设计时,选用一个合适的ActiveX控件,有时可大大减少编程工作量.ActiveX 控件(又称OCX)基于COM技术,作为独立的软件模块,它可以在任何程序设计语言中插入使用.本文仅以VC++为 ...

随机推荐

  1. js中的继承1--类继承

    继承:function Animal(name){ this.name = name; this.showName = function(){ alert(this.name); } } functi ...

  2. (转载)struts2的驱动模型

    模型驱动即ModelDriver,所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象. 比如,有实体类User如下: public class User { private int ...

  3. ArcGIS Desktop开发基础(转)

    http://www.cnblogs.com/maweifeng/archive/2006/07/19/455024.html  原文地址 ArcGIS Desktop开发的类型 ○ 自定义ArcMa ...

  4. Static的使用

    (一) 当它用于函数定义时,或用于代码块之外的变量声明时,static关键字用于修饰修改标识符的连接属性,从external改为internal,但是标识符的存储类型和作用域不受影响.用这种方式声明的 ...

  5. ABAP OO与ALV结合方式探索(1)

    用OO来开发,尤其是在复杂业务的开发过程中 从程序设计的角度而言,应该更简单一点 而ALV是二次开发中登场很高的一个控件 最近做了一些尝试,探索OO的代码和ALV的结合使用   使用控件型的ALV A ...

  6. builder-设计模式

    package com.wp.java.builder; import org.junit.Test; public class DoDoContactDemo { @Test public void ...

  7. server2008R2服务器开启远程

    通常我们开启远程桌面只需要在我的电脑那边把远程的打开就可以了,然后允许访问 上面说的这些其实晚上很多都有的,自己找一下,这边是自己遇到的一点问题,就是弄了很久,按网上说的弄很久,发现问题原来是在,路由 ...

  8. 【Qt】Qt国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)【转】

    简介 使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮.QLineEdit.QSpinBox.QScrollBar中的右键菜单等.通常情况下,我们软件都不会是纯英文的,那么如何 ...

  9. JavaScript移除数组元素减少长度的方法

    JavaScript移除数组元素减少长度的方法,代码如下: //数组移除长度方法 var array=[];  array[0]="张三";  array[1]="李四& ...

  10. apk反编译之二——smali学习

    在apk被反编译后,原来的java程序会以smali文件呈现.这就需要补充smali的知识.依旧参考官方文档,择日我将把官方文档做一下翻译.今日先贴出链接地址: 1:了解smali字节码的寄存器 请参 ...