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);
            }
        }

 

這里采取的方法是采用將線畫到原點的方式使其消失。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM