• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#WinForm开发系列之chart控件画折线图和柱形图并自定义鼠标移动到数据标记点显示提示 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

原文出自http://blog.csdn.net/dannyiscoder/article/details/70768230


1.首先拖动chart控件到窗体,设置chart1的属性Legends中默认的Legend1的Enable为false;


2.设置Series的ChartType为Line


3.后台绑定数据

 List<string> xData = new List<string>() { "A", "B", "C", "D" };
 List<int> yData = new List<int>() { 10, 20, 30, 40 };
 chart1.Series[0]["PieLabelStyle"] = "Outside";//将文字移到外侧
 chart1.Series[0]["PieLineColor"] = "Black";//绘制黑色的连线。
 chart1.Series[0].Points.DataBindXY(xData, yData);


4.chant控件自带的信息提示为ToolTip(映射区),如图1所示:


图1


5.在窗体加载中可通过如下代码定义需要显示的提示信息,代码如下:

 private void Form3_Load(object sender, EventArgs e)
 {
            List<string> xData = new List<string>() { "1", "2", "3", "4" };
            List<int> yData = new List<int>() { 10, 20, 30, 40 };
            //线条颜色
            chart1.Series[0].Color = Color.Green;
            //线条粗细
            chart1.Series[0].BorderWidth = 2;
            //标记点边框颜色      
            chart1.Series[0].MarkerBorderColor = Color.Blue;
            //标记点边框大小
            chart1.Series[0].MarkerBorderWidth = 3; //chart1.;// Xaxis 
            //标记点中心颜色
            chart1.Series[0].MarkerColor = Color.White;//AxisColor
            //标记点大小
            chart1.Series[0].MarkerSize = 8;
            //标记点类型     
            chart1.Series[0].MarkerStyle = MarkerStyle.Circle;   


    //需要提示的信息    
            chart1.Series[0].ToolTip = "当前年份:#VAL\n最高分:#MAX\n最低分:#Min";


            //将文字移到外侧
            chart1.Series[0]["PieLabelStyle"] = "Outside";
            //绘制黑色的连线
            chart1.Series[0]["PieLineColor"] = "Black";
            chart1.Series[0].Points.DataBindXY(xData, yData);
 }


6.效果如下图2,3所示:


图2


图3

注:为了自定义提示信息的样式,我自己定义了一个提示框,通过如下方法进行显示

7.在form窗体上画提示框,(使用两个panel合并三个label),效果如图4所示:


图4

8.使用chart控件的工具提示事件,如图5所示:


图5

9.(1)初始窗体方法中隐藏自定义提示信息,代码如下:

public Form3()
{
      InitializeComponent();
      this.panel1.Visible = false;
}

(2)在窗体加载方法里绑定鼠标悬停工具提示事件,代码如下:

 private void Form3_Load(object sender, EventArgs e)
{
       //悬停工具提示事件
       chart1.GetToolTipText += new EventHandler<ToolTipEventArgs>(chart1_GetToolTipText);

       List<string> xData = new List<string>() { "1", "2", "3", "4" };
       List<int> yData = new List<int>() { 10, 20, 30, 40 };
       //线条颜色
       chart1.Series[0].Color = Color.Green;
       //线条粗细
       chart1.Series[0].BorderWidth = 2;
       //标记点边框颜色      
       chart1.Series[0].MarkerBorderColor = Color.Blue;
       //标记点边框大小
       chart1.Series[0].MarkerBorderWidth = 3; //chart1.;// Xaxis 
       //标记点中心颜色
       chart1.Series[0].MarkerColor = Color.White;//AxisColor
       //标记点大小
       chart1.Series[0].MarkerSize = 8;
       //标记点类型     
       chart1.Series[0].MarkerStyle = MarkerStyle.Circle;//MarkerStyle.Circle;
       //将文字移到外侧
       chart1.Series[0]["PieLabelStyle"] = "Outside";
       //绘制黑色的连线
       chart1.Series[0]["PieLineColor"] = "Black";
       chart1.Series[0].Points.DataBindXY(xData, yData);
 }


(3)悬停工具提示事件方法如下代码:

//在具体事件处理函数中给出处理方法 
/*用chart的mousemove时间,实时跟踪鼠标最近的X轴的位置,然后把cursorX设置到那个位置上,

让用户知道我是选的那一个X的值,同时用tooltip显示该X轴上所有的Y值*/
void chart1_GetToolTipText(object sender, ToolTipEventArgs e)
{

      //判断鼠标是否移动到数据标记点,是则显示提示信息
      if (e.HitTestResult.ChartElementType == ChartElementType.DataPoint)
      {
           int i = e.HitTestResult.PointIndex;
           DataPoint dp = e.HitTestResult.Series.Points[i];
           //分别显示x轴和y轴的数值,其中{1:F3},表示显示的是float类型,精确到小数点后3位。                     
           string r = string.Format("次数:{0};数值:{1} ", dp.XValue, dp.YValues[0]);

           //鼠标相对于窗体左上角的坐标
            Point formPoint = this.PointToClient(Control.MousePosition);
            int x = formPoint.X;
            int y = formPoint.Y;
            //显示提示信息
    this.panel1.Visible = true;
            this.panel1.Location = new Point(x, y);
            this.label3.Text = r;
            }

    //鼠标离开数据标记点,则隐藏提示信息
            else {
                this.panel1.Visible = false;
            }
 }

7.当鼠标移动到不同数据标记点是的提示效果如图6,7所示:


图6


图7


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#文件流-FileStream类发布时间:2022-07-13
下一篇:
c#滑轮事件发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap