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

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

原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/11613153.html

时间: 2024-08-27 08:19:18

Winform中设置ZedGraph鼠标焦点位置画出十字线并在鼠标移出时十字线消失的相关文章

Winform中设置ZedGraph的曲线为折线、点折线、散点图

场景 Winform中设置ZedGraph的曲线为散点图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102465399 在上面设置单条曲线为散点图后的思路,继续扩展设置曲线为折线.点折图.散点图. 效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 读取配置文件内容获取设置的曲线样式后 Lin

Winform中设置ZedGraph因设置小刻度导致的竖直虚线显示过多

场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100112573 https://www.cnblogs.com/badaoliumangqizhi/p/11422087.html 在上面对ZedGraph的属性进行设置后导致曲线图出现众多竖直虚线. 实现 这是因为对ZedGraph设置了小刻度,将其设置为false即可. ZedGraphCont

winform 中设置窗体的默认焦点

转载:http://www.cnblogs.com/weekzero/p/3504513.html winform的窗体中,有时候需要设置默认焦点,有时候需要取消默认焦点. 设置默认焦点,最简单的方法就是设置这个控件的tabIndex,例:textBox1.TabIndex = 0; 也可以在窗体事件中用focus事件来实现,比如在Form的Activated事件中,如: private void Form1_Activated(object sender, EventArgs e) { tex

winform中设置FormBorderStyle为None后点击任务栏自动最小化实现

在winform编程中,有时候我们可能对窗体样式需要定义,不适用系统自带的样式,这样我们可以设置FormBorderStyle属性为None.但是设置了FormBorderStyle为None后,我们点击任务栏应用程序图标并不能实现程序的最小化的操作(使用系统自带样式是可以实现的).下面我将展示如何在FormBorderStyle为None的情况下,实现应用程序任务栏图标点击可实现最小化. 1.添加如下代码 [DllImport("user32.dll", EntryPoint = &

Python中如何用turtle库画出小猪佩奇社会人

首先送上传送门: https://www.zhihu.com/question/275611095/answer/382959285 接下来贴代码 1 from turtle import * 2 3 def nose(x,y):#鼻子 4 penup()#提起笔 5 goto(x,y)#定位 6 pendown()#落笔,开始画 7 setheading(-30)#将乌龟的方向设置为to_angle/为数字(0-东.90-北.180-西.270-南) 8 begin_fill()#准备开始填充

winform中键盘和鼠标事件的捕捉和重写(转)

在 编写winform应用程序时,有时需要无论在哪个控件获取焦点时,对某一个键盘输入或者鼠标事件都进行同样的操作.比如编写一个处理图片的应用程序时, 希望无论当前哪个控件获得焦点,当用户按上.下.左.右键时,图片控件的滚动条都会上下左右移动,当用户拨动鼠标滚轮时图片总能发大或缩小.如果对每个控 件的键盘或鼠标事件都进行设置,必然会造成很多的重复工作.本文我将介绍如何在winform下对某一个键盘输入或者鼠标事件进行相同的操作. 1.键盘事件的捕捉和重写 首先是键盘操作,为了实现上述功能,现在介绍

几何画板中去除画出的线段的教程

在几何画板中作图和在黑板和纸上画图不一样,没有直接可以使用的橡皮擦或者黑板擦来将画的图擦除,但是在几何画板中如果画错了图或者不需要某个图形,也是可以不让它显示出来的,这样就不会妨碍继续作图.下面就以如何在几何画板中去除画出的线段为例给大家作详细介绍. 方法一 如果该线段没有子对象的,即没有其他图像是建立在这条线段基础上做出来的,那么这个线段就是独立存在的,去除它多作图没有任何影响的,这个时候要去掉线段的话,直接选中该线段,执行"编辑"--"剪切"命令或按Delete

[转]html5 Canvas画图教程(9)—canvas中画出矩形和圆形

本文讲一下在canvas中画出矩形和圆形的办法,他们属于基础图形.当然,基础图形本来不止他们,但在canvas中,只有画矩形与圆形不需要用其他方法模拟. canvas画矩形 1,fillRect与strokeRect fillRect可以直接填充出一个矩形,填充样式是你当前设置的样式:同理strokeRect就是直接描边一个矩形 他们的参数是一致的,依次是(起点x坐标,起点y,矩形的宽,矩形的高).这里的起点,注意,是指矩形的左上角那个点. 我们通常用他们来做简单的事,他们也只能做简单的事.为什

winform中键盘和鼠标事件的捕捉和重写

在编写winform应用程序时,有时需要无论在哪个控件获取焦点时,对某一个键盘输入或者鼠标事件都进行同样的操作.比如编写一个处理图片的应用程序时,希望无论当前哪个控件获得焦点,当用户按上.下.左.右键时,图片控件的滚动条都会上下左右移动,当用户拨动鼠标滚轮时图片总能发大或缩小.如果对每个控件的键盘或鼠标事件都进行设置,必然会造成很多的重复工作.本文我将介绍如何在winform下对某一个键盘输入或者鼠标事件进行相同的操作. 1.键盘事件的捕捉和重写 首先是键盘操作,为了实现上述功能,现在介绍win