C#中的chart控件,是非常适合用来绘图的。当想查看数据的细节时,可以设置chart控件的放大缩小功能,一般该功能是和滚动条一块使用的。

比如我现在想查看圆圈处的数据的细节,那么添加以下语句就可以执行放大功能以查看数据的细节

chart1.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
chart1.ChartAreas[0].CursorY.IsUserSelectionEnabled = true;

当看完细节后又想看全局数据时,那么这时我们就需要实行缩小功能,可以使用chart中的ZoomReset(int numberOfViews)函数执行缩小功能,其中的参数是要重置的缩放操作数。一般我们都是一步一步放大缩小,那么该函数的使用就是 ZoomReset(1),表示重置1次缩放操作。

//该语句表示重置X轴的一次缩放操作
chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset(1);



上面两张图片就展示了放大和缩小后的效果。

但是这里有个问题,那就是当我放大查看数据后,并且用滚动条拖动数据到其他位置,再重置缩放操作时,视图位置会回到前一步执行放大操作的视图位置。

当前在00:08:00执行了放大视图操作

在该视图下,使用滚动条拖动数据至02:29:00

执行重置缩放操作后,视图位置又回到了00:08:00处,也就是执行放大操作时的视图位置。

这样对我们的使用就非常的不方便,所以如何解决这个问题呢?如何在执行重置缩放操作后,视图位置仍能定位到我们当前查看的视图位置呢?其实解决方法也很简单,那就是控制chart控件视图的位置,即控制
chart1.ChartAreas[0].AxisX.ScaleView.Position
的值。
那么要如何控制呢,只需要用一个定位点来确定便解决了。

现在我用当前X轴视图的中间点来当做定位点(02:28:00),为了执行重置缩放操作后,该定位点仍旧是重置缩放操作后的中间点(通俗讲就是视图位置还是在这个定位点处),那么添加以下代码便可以实现了

//用变量x记录下定位点的x值,也就是当前X轴视图的中间位置
double x = (chart1.ChartAreas[0].AxisX.ScaleView.ViewMaximum + chart1.ChartAreas[0].AxisX.ScaleView.ViewMinimum) / 2;//执行一次重置缩放操作
chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset(1);//将X轴视图位置重新定位。用x的值减去新的X轴视图大小的一半,即为新的X轴视图定位
chart1.ChartAreas[0].AxisX.ScaleView.Position = x - (chart1.ChartAreas[0].AxisX.ScaleView.ViewMaximum - chart1.ChartAreas[0].AxisX.ScaleView.ViewMinimum) / 2;//这里要注意,要控制视图定位在X轴的最大最小值之间,不然视图位置就跑到数据外面去了if (chart1.ChartAreas[0].AxisX.ScaleView.Position < chart1.ChartAreas[0].AxisX.Minimum)chart1.ChartAreas[0].AxisX.ScaleView.Position = chart1.ChartAreas[0].AxisX.Minimum;if (chart1.ChartAreas[0].AxisX.ScaleView.ViewMaximum > chart1.ChartAreas[0].AxisX.Maximum)chart1.ChartAreas[0].AxisX.ScaleView.Position = chart1.ChartAreas[0].AxisX.Maximum - (chart1.ChartAreas[0].AxisX.ScaleView.ViewMaximum chart1.ChartAreas[0].AxisX.ScaleView.ViewMinimum);


执行重置缩放操作,可以看到,X轴的视图位置仍是以(02:28:00)为中心,并没有回到之前的(00:08:00)附近,问题完美解决。
源代码下载

C# 【已上传代码】解决chart控件缩小视图后不能回到当前视图位置问题相关推荐

  1. asp.net实现ftp上传代码(解决大文件上传问题)

    asp.net实现ftp上传代码(解决大文件上传问题) 参考文章: (1)asp.net实现ftp上传代码(解决大文件上传问题) (2)https://www.cnblogs.com/LYunF/ar ...

  2. (转)asp.net2.0 上传大容量文件第三方控件radupload

    1.web.config  中需要加入:  <httpHandlers>     <add verb="*" path="Telerik.RadUplo ...

  3. html元素中,可以上传文件的唯一控件就是input type=file啦

    值得注意的是:当一个表单里面包含这个上传元素的时候,表单的enctype必须指定为multipart/form-data,method必须指定为post,浏览器才会认识并正确执行.但是还有一点,浏览器 ...

  4. element ui实现自定义上传文件-以及解决已上传文件列表消失问题

    自定义上传按钮,非自动上传,效果图 action - 就是上传的接口地址 accept - 是限制上传文件格式,设置后只能上传该格式文件, 选取-选取按钮只是选择了文件 ,但是并没有上传 若要点击上传 ...

  5. iOS开发:GitHub上传代码错误提示fatal: Authentication failed for 'https://gitee.com/XXX/XXX.git/‘的解决方法

    上传代码到Git上面,有时候会遇到各种情况,有些时候是因为合并代码冲突,有些时候是因为修改了Git的登录密码需要重新认证.那么这里就来讲解错误提示fatal: Authentication faile ...

  6. GIT上传代码的时候出现(Please tell me who you are.)信息应该咋么解决?

    GIT上传代码的时候出现(Please tell me who you are.)信息应该咋么解决? 文章目录 GIT上传代码的时候出现(Please tell me who you are.)信息应 ...

  7. idea上传代码到gitee出现的问题及解决办法

    第一次上传代码到gitee,如果按照网上的办法直接上传,会出现很多问题.本人虽然以前使用过gitee上传代码,但是那是在别人的帮助下进行的,而自己首次独立创建仓库,上传代码确出现了很多问题,现在把遇到 ...

  8. eclipse上传代码到github,漏掉的代码怎么上传解决方法

    eclipse上传代码到github,有些更新的代码commit的时候没有上传到github,这个时候只有手动上传,漏掉的代码. 没有上传的代码,在项目中会出现问号标识此代码没有上传到github.而 ...

  9. GIT上传代码Enumerating objects:类型报错解决,实测可用

    最近使用在idea中Git上传代码经常反复出现Enumerating objects: 29, done. Delta compression using up to 8 threads Total开 ...

最新文章

  1. web前端开发最佳实践_学习前端Web开发的最佳方法
  2. 日志分析,seci-log1.03增加了web日志分析,新增了多种告警
  3. python怎么让摄像头图像暂停然后在启动_双目摄像头测量距离
  4. .h头文件 .lib动态链接库文件 .dll 动态链接库
  5. 网站关键词优化的五大侧重点!
  6. 日常生活中怎样利用计算机的,数据存储与管理在日常生活中的三种方式
  7. 为CodeLove编写插件——常用软件扫描(SoftwareToScan)
  8. 源路由 小实验 小发现
  9. POJ 1936 字符匹配(水题)
  10. python输入三次密码程序_请教各位大神,为啥以下代码输入修改密码后连输错三次还是能输入...
  11. 【Java】Java_03第一个Java程序
  12. 即时语音提示软件php,InsTalk即时语音提示校对软件(语音识别和语音合成软件)
  13. 抖音下载android,抖音完整版
  14. k8s-liveness和readness详解
  15. BUUCTF_Crytpo_robomunication
  16. ZK指纹考勤机Java接口
  17. ONF(Open Networking Foundation)
  18. Byval 和 Byref的区别
  19. google的黑镜子 -- 思考技术元素对生活的影响
  20. 【日常】某B视频网站模拟登录尝试

热门文章

  1. 如何采集电信的电视信号---搭建酒店OTT-TV的重要环节
  2. 体验 服务器正在维护升级中 给大,4月3日体验服停机更新公告
  3. 我来图书馆小程序一键签到和一键抢位置工具
  4. hbuilderx版本怎么更新到新版本_HbuilderX2.6.3.20200305版本编译后的APP自动更新异常...
  5. 防伪标签制作制版工艺介绍_防伪常识
  6. 企业招标采购(系统)降本增效的20个措施
  7. 计算机学院与软件学院区别,计算机学院和软件学院的专业上有什么区别?
  8. 基础算法-Xgboost
  9. 合理利用自己的业余时间
  10. 联想潮7000怎么安装Java_联想小新潮7000笔记本装win10系统及bios设置教程