场景

在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. nginx官网版本说明

    nginx软件下载:http://nginx.org/en/download.html Mainline version:Nginx 正在主力开发的版本Stable version:最新稳定版,生产环 ...

  2. 珠峰-express

    ##### #### 中间件的作用 #### 自己写的Route方法 #### #### 中间件

  3. 普通台式机装centos7系统

    一.环境 台式机配置如下: 配置:CPU -i5-7400 内存:8G 硬盘:1T 原装系统: win7 64x 使用软碟通刻录U盘做系统启动盘,教程: 教你用UltraISO+U盘制作启动盘和安装各 ...

  4. Quartz.NET - 课程 6: Cron 触发器

    译者注: 目录在这 [译]Quartz.NET 3.x 教程 原文在这 Lesson 6: CronTrigger 如果你需要一个类似日历概念而不是像 SimpleTrigger 那样指定间隔来调度作 ...

  5. 表关联使用INNER JOIN实现更新功能

    准备一些数据,创建2张表,表1为学生表: CREATE TABLE [dbo].[Student] ( [SNO] INT NOT NULL PRIMARY KEY, ) NOT NULL, ,) N ...

  6. opencv —— approxPolyDP 生成逼近曲线

    生成逼近曲线:approxPolyDP 函数 该函数采用 Douglas-Peucker 算法(也称迭代终点拟合算法).可以有效减少多边形曲线上点的数量,生成逼近曲线,简化后继操作. 经典的 Doug ...

  7. java数据结构---循环队列

    #java学习经验总结------循环队列的实现(数组) package datastructure;/*数组实现循环队列 队列first in first out*/ public class Ci ...

  8. Windows2008R2 一键安全优化脚本

      ::author vim ::QQ 82996821 ::filename Windows2008R2_safe_auto_set.bat   :start @echo off color 0a ...

  9. C# WPF从RIOT API获取数据(RIOT代表作品《英雄联盟》)

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. C# WPF从RIOT API获取数据(RIOT代表作品<英雄联盟>) 阅读导航 ...

  10. 第7章.字符串、String类和StringBuilder类

    参考链接: https://www.runoob.com/csharp/csharp-string.html https://www.cnblogs.com/cang12138/p/7323709.h ...