场景

在ZedGraph的曲线图上,双击图时会在图形上生成箭头符号标记。

效果

注:

博客主页:
https://blog.csdn.net/badao_liumang_qizhi

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

首先在ZedGraph所在的窗体的load事件中对ZedGraph的鼠标双击事件进行重写

    zgc.DoubleClickEvent -= zgc_DoubleClickEvent;       //鼠标双击事件订阅
zgc.DoubleClickEvent += zgc_DoubleClickEvent; //鼠标双击事件订阅

然后在具体订阅的事件实现中

private static bool zgc_DoubleClickEvent(ZedGraphControl sender, MouseEventArgs e)
{
//获取(ZedGraphControl 对象
ZedGraphControl zgc = sender as ZedGraphControl;
if (zgc != null)
{
try
{
//获取鼠标焦点距离最近的点所在的曲线以及在曲线上的点的索引
PointF mousePt = new PointF(e.X, e.Y);
CurveItem nearstCurve;
int i;
zgc.GraphPane.FindNearestPoint(mousePt, out nearstCurve, out i);
if (nearstCurve != null && nearstCurve.Points[i] != null)
{
//获取鼠标焦点距离最近的点的坐标
Double x = nearstCurve.Points[i].X;
Double y = nearstCurve.Points[i].Y;
string title = nearstCurve.Points[i].Tag as string; #region 添加箭头标记 ArrowObj myArrow = new ArrowObj(Color.FromArgb(0xA0, 0x00, 0x00), , i + , zgc.GraphPane.YAxisList[].Scale.Min, i + , zgc.GraphPane.YAxisList[].Scale.Max);
myArrow.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash;
myArrow.Line.DashOff = ;
myArrow.Line.DashOn = ;
myArrow.ZOrder = ZOrder.B_BehindLegend; zgc.GraphPane.GraphObjList.Clear();
zgc.GraphPane.GraphObjList.Add(myArrow); #endregion
}
return true;
}
catch(Exception ex)
{
ICSharpCode.Core.LoggingService<DataChartHelper>.Error("zgc_DoubleClickEvent exception:" + ex.Message, ex);
return false;
}
}
else
{
return false;
}
}

注:

首先获取距离鼠标焦点最近的点以及所在的曲线。

然后根据距离最近的点的横纵坐标使用ArrowObj 对象生成线。

ArrowObj
:表示图形上的图形箭头或线对象的类。ArrowObj对象的列表由GraphObjList集合类维护。

ArrowObj 的构造方法为:

第一个参数为颜色对象,第二个参数为大小,后面四个参数用于定位,两点确定一条直线,两个坐标确定一个点,所以是四个坐标确定一条线。

前两个确定一个点,后两个确定一个点。

在代码中使用的是:

ArrowObj myArrow = new ArrowObj(Color.FromArgb(0xA0, 0x00, 0x00), , i + , zgc.GraphPane.YAxisList[].Scale.Min, i + ,

zgc.GraphPane.YAxisList[].Scale.Max);

第一个点是在X轴上点,其坐标为上面距离鼠标焦点最近的点的横坐标+1,Y轴刻度的最小值。

第二个点坐标横坐标一样,纵坐标是Y轴刻度的最大值。

ZedGraph怎样在双击图形后添加箭头标记的更多相关文章

  1. easyui datagrid 每条数据后添加操作按钮

    easyui datagrid 每条数据后添加“编辑.查看.删除”按钮 1.给datagrid添加操作字段:字段值 <table class="easyui-datagrid" ...

  2. JavaScript实现点击按钮弹出输入框,点确定后添加li组件到ul组件里

    JavaScript实现点击按钮弹出输入框,点确定后添加li组件到ul组件里 <!doctype html> <html manifest="lab4.manifest&q ...

  3. JavaScript在div后添加删除div

    var idd = 'str'; $('.task-done-detail-content-p7').click(function () { var id = this.id; if(idd !== ...

  4. nodejs操作 mongoose(mongodb)和Sequelize(mysql)查询数据后添加新属性未生效

    最近在着手koa时候,发现mongoose(mongodb)查询数据库后添加新属性,前端拿不到新属性问题, 然后测试了一下Sequelize(mysql),发现也有同样的问题存在.此时着手干! 1.1 ...

  5. svn提交后 添加注释

    svn 提交后添加注释 第一步: 第二步: 第三步:提交就可以了. 注意:如果svn服务器管理员没有激活pre-revprop-change这个hook,会出现 需要让svn服务器管理员没有激活pre ...

  6. rancher导入k8s集群后添加监控无数据

    1.日志报错 rancher导入k8s集群后添加监控无数据,rancher日志报错: k8s.io/kube-state-metrics/pkg/collectors/builder.go:: Fai ...

  7. gulp给文件后添加md5时间戳

    这里为总的方法,实际项目中拷贝出来的,底下有详细的总结以及只针对添加时间戳的方法 1 // 引入 gulp及组件 var gulp = require('gulp'), autoprefixer = ...

  8. docker容器启动后添加端口映射

    DOCKER 给运行中的容器添加映射端口 方法1 1.获得容器IP 将container_name 换成实际环境中的容器名 docker inspect `container_name` | grep ...

  9. cm 安装cdh 后添加hive服务

    cm 安装cdh 后添加hive服务,出现错误提示 添加服务时候hive 配置如下: 错误信息提示: 错误日志: xec /opt/cloudera/parcels/CDH-5.4.7-1.cdh5. ...

随机推荐

  1. HDU 5391 水题。

    E - 5 Time Limit:1500MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  2. JMeter接口测试-提取动态列表最后一个值的两种方法

    前言 在用JMeter做接口测试时,我们经常会遇到,一个接口返回一个json串,在这个json串中,某个节点的值是一个列表,而且这个列表的长度是动态变化的.今天我们来学习两种提取动态列表最后一个值的两 ...

  3. c++ 有符号int和无符号int做加减乘除问题

    c++ 有符号int和无符号int做加算术运算的问题: 一.运算过程先把有符号的补码数直接看成无符号数,在和无符号数进行算术运算 二.int和unsigned int类型进行混合算数运算时,运算结果为 ...

  4. 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)

    为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最 ...

  5. Java自学-多线程 线程安全的类

    Java常见的线程安全相关的面试题 步骤 1 : HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,都是键值对保存数据的方式 区别1: HashMap可以 ...

  6. java 关于xlsx(xls) 和 csv 文件的数据解析

    1.适用于xlsx 和 xls  <!--xlsx和xls文件pom依赖--> <dependency> <groupId>org.apache.poi</g ...

  7. python基础扩展

    一.垃圾回收机制 垃圾回收机制是自动帮助我们管理内存,清理垃圾的一种工具 1.引用计数 当一个对象的引用被创建或者复制时,对象的引用计数加1: 当一个对象的引用被销毁时,对象的引用计数减1: 当对象的 ...

  8. VAR 学习笔记3

    脉冲响应图及方差分析 当使用VAR模型的时候需要完成: 选择合适的变量 就是研究变量这个没有疑问 判断滞后阶数 根据AIC和SC准则,选择 为何做格兰杰因果检验 如果给定 \(x_t\) 的滞后阶数, ...

  9. 从表单驱动到模型驱动,解读低代码开发平台的发展趋势 ZT

    原文地址:https://www.grapecity.com.cn/blogs/read-the-trends-of-low-code-development-platforms 随着社会数字化进程的 ...

  10. win10下GO的环境配置

    目录 问题描述 环境变量配置 问题描述 win10 下配置 GO 语言的运行环境,主要是环境变量的设置 环境变量配置 在windows的PATH变量中添加go的可执行文件所在的目录: PATH=D:\ ...