zoukankan      html  css  js  c++  java
  • Winform中设置ZedGraph鼠标焦点位置画出十字线并在鼠标移出时十字线消失

    场景

    Winforn中设置ZedGraph曲线图的属性、坐标轴属性、刻度属性:

    https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100112573

    在鼠标经过曲线附近时获取最近曲线以及曲线上点的坐标,并以此坐标表示一条十字线。

    效果

    注:

    博客主页:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    绑定鼠标移动事件

    zgc.MouseMove += zgc_MouseMove;

    其中zgc是 ZedGraphControl zgc

    private static void zgc_MouseMove(object sender, MouseEventArgs e)
            {
                using (Graphics gc = Global.zedGraphControl1.CreateGraphics())
                using (Pen pen = new Pen(Color.Green))
                {
                    //设置画笔的宽度
                    pen.Width = 1;
                    pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot;
                    RectangleF rect = Global.zedGraphControl1.GraphPane.Chart.Rect;
                    //确保在画图区域
                    if (rect.Contains(e.Location))
                    {
                        Global.zedGraphControl1.Refresh();
                        //画竖线
                        gc.DrawLine(pen, e.X, rect.Top, e.X, rect.Bottom);
                        //画横线
                        gc.DrawLine(pen, rect.Left, e.Y, rect.Right, e.Y);
    
    
                    }
                }
            }

    注:

    Global.zedGraphControl1是全局域的zedGraphControl对象。

    这样后会随着鼠标的移动产生十字线,但是在离开pane时怎样将画好的十字线删除掉。

    绑定其鼠标移除事件

    zgc.MouseLeave += zgc_MouseLeave;

    实现方法

    private static void zgc_MouseLeave(object sender, EventArgs e)
            {
                using (Graphics gc = Global.zedGraphControl1.CreateGraphics())
                using (Pen pen = new Pen(Color.Green))
                {
                    //设置画笔的宽度
                    pen.Width = 1;
                    pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot;
                    RectangleF rect = Global.zedGraphControl1.GraphPane.Chart.Rect;
                    //确保在画图区域
                    Global.zedGraphControl1.Refresh();
                    //画竖线
                    gc.DrawLine(pen, 0, 0, 0, 0);
                    //画横线
                    gc.DrawLine(pen, 0, 0, 0, 0);
                }
            }

    这里采取的方法是采用将线画到原点的方式使其消失。

  • 相关阅读:
    mysql_config 问题
    软考倒计时3天
    软考倒计时5天
    Pdf 解密后复制文字乱码
    软考倒计时7天:题目书中的易混点
    应急储备和管理储备
    软考倒计时9天:100个主要知识点
    软考倒计时10天
    软考倒计时15天
    软考倒计时18天
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/11613153.html
Copyright © 2011-2022 走看看