首页 > 编程语言 >多子曲线的曲线组件源码定制之详细功能需求,适用工控、军工、金融等数据分析领域 浮云E绘图

多子曲线的曲线组件源码定制之详细功能需求,适用工控、军工、金融等数据分析领域 浮云E绘图

时间:2023-07-09 10:34:48浏览次数:62  
标签:siv 工控 曲线 dc 源码 nPos sih rect

 前文已经详细介绍了通用曲线控件源码定制开发从需求到编码实现,具体可参阅 通用曲线控件源码定制之设计实现篇 和 通用曲线控件定制之重点难点篇(附源码),本文由浮云E绘图开启大项目多曲线海量数据的曲线组件分析和实现之路。

 

一、需求背景

在一些工业控制领域,有大量设备采集多种类型的大量数据,需要可视化直观对比某时段/刻,同一设备上的各种数据状态,或者多个设备上的同一种数据,并且海量数据(数百万个点)高性能展示,现有市面上没有一款软件能做到精细化并高效的支持,需要专业团队定制研发一款适合大项目多曲线大数据量的曲线组件。

 

二、详细需求

本曲线组件功能需要主要包括:普通曲线功能、移动测量、多类型曲线、曲线组管理、业务支持和性能要求,具体描述如下表所示:

普通功能 标题 标题文字、字体大小、字颜色、背景色、位置等
脚注 脚注文字、字体大小、字颜色、背景色、位置等
图例 图例名称、图例曲线颜色、风格、粗细等,图例隐藏显示
X轴 X轴是时间,刻度轴、刻度值、轴名称;
支持年月日时分秒毫秒微妙格式化缩放
Y轴 Y轴是时间,刻度轴、刻度值、轴名称;
支持固定设置轴范围和自动计算轴范围
网格 网格线粗细、线性、颜色等
曲线 曲线粗细、颜色、风格、标注等,具体看多类型曲线
缩放 放大/缩小曲线区域,对应X轴刻度缩放
移动翻页 左右移动翻页
导出、打印 曲线导出成图片,可打印
移动测量 鼠标移动实时画十字线 鼠标移动画异或十字线
透明信息提示框 透明度、边框、显示位置、显示文本和字体颜色等
鼠标移动实时数值显示 鼠标点捕获计算实时坐标值,并在提示框显示
多类型曲线 状态量曲线 即有限取值范围的曲线,比如红灯、黄灯、白灯、灭灯
模拟量曲线 即Y值是数值的曲线,比如电压200伏
曲线组管理 添加、删除多子曲线 可一屏展示多区域曲线,比如某采集设备的4条曲线分4个区域展示
多子曲线同步移动、缩放等 基于相同X时间轴,同步移动缩放所有子曲线
子曲线折叠/展开 为了充分理由曲线区域,支持子曲线纵向折叠和展开
业务支持 年、月统计曲线 支持统计曲线,并标注
日曲线 支持历史点曲线,一屏展示设备属性的一整天所有点
实时播放曲线 曲线支持动态实时播放,比如实时曲线
曲线播放 支持曲线回放时,按时间有序动态播放曲线
性能要求 支持海量数据点高效绘制 支持10条子曲线、200万以上个数据点的0.5s以内绘制

 

三、技术要求

要求把本曲线模块封装成功能独立的DLL,以供第三方项目跨语言支持。本曲线组件功能非常丰富,相关类很多、类的属性很多、类的方法很多,所以提供给第三方的接口非常多,为了更有模块化和清晰的接口结构,请不要用函数导出(C#和VC++调用dll步骤,接口指针、字符串等类型对应关系)方式提供接口,以类导出的方式提供接口,采用C++/CLI技术实现。

浮云E绘图已经完整实现了上述所有功能,满足所有功能要求、性能要求和技术要求,并已经成功应用于多个大项目上。有需要定制开发源码,请联系。

 1 //作者:浮云E绘图,专业定制CAD等绘图工具、工控曲线、报表等软件
 2 //QQ:316868127
 3 void CChartView::OnPaint()
 4 {
 5     CPaintDC outputdc(this);
 6 
 7     CRect rect;
 8     GetClientRect(&rect);
 9 
10     SCROLLINFO sih;
11     sih.cbSize = sizeof(SCROLLINFO);
12     sih.fMask = SIF_POS;
13     SCROLLINFO siv;
14     siv.cbSize = sizeof(SCROLLINFO);
15     siv.fMask = SIF_POS;
16     if (!GetScrollInfo(SB_HORZ, &sih))
17         sih.nPos = 0;
18     if (!GetScrollInfo(SB_VERT, &siv))
19         siv.nPos = 0;
20 
21     CRect totalRect;
22     int virtheight = m_virtualHeight + 1;
23     totalRect.SetRect(0, 0, rect.Width(), virtheight);
24 
25     // Creating memory CDC
26     CDC dc;
27     dc.CreateCompatibleDC(&outputdc);
28     CBitmap bmp;
29     bmp.CreateCompatibleBitmap(&outputdc, rect.right, rect.bottom);
30     CBitmap* oldbmp = dc.SelectObject(&bmp);
31 
32 
33     dc.SetWindowOrg(sih.nPos, siv.nPos);
34     
35     Draw(&dc, totalRect);
36 
37     // Blit the memory CDC to screen
38     outputdc.BitBlt(0, 0, rect.right, rect.bottom, &dc, sih.nPos, siv.nPos, SRCCOPY);            
39     //sih.nPos->0, siv.nPos->0
40     dc.SelectObject(oldbmp);
41 }

 


标签:siv,工控,曲线,dc,源码,nPos,sih,rect
From: https://www.cnblogs.com/fydraw/p/17538392.html

相关文章

  • 通用曲线控件定制之重点难点篇(附源码,功能丰富灵活) 浮云E绘图
    ​ 上篇已经介绍通用曲线控件源码定制之设计实现,详细描述了通用曲线控件的功能部件及其结构关系,并且实现了核心类的源码,本文由浮云E绘图继续介绍通用曲线控件定制开发的重点和难点,并附完整源码。 一.曲线控件源码类使用流程根据上文通用曲线控件源码定制之设计实现篇可知曲......
  • python 下载element源码
    #encoding:utf-8frombs4importBeautifulSoupimportrequests,re,os,socketfromurllibimportrequest#指定要下载的版本element_ui_version="2.15.13"#指定文件要存放的位置element_ui_dir="D:/tmp"save_ui_dir=os.path.join(element_ui_dir,"elem......
  • 分布式ID|从源码角度深度解析美团Leaf双Buffer优化方案
    分布式ID的使用场景基于MySql的初步方案第一次优化:Leaf-segment数据库方案第二次优化:Leaf-segment双buffer优化源码解析双buffer优化方案 背景 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产......
  • 我用numpy实现了GPT-2,GPT-2源码,GPT-2模型加速推理,并且可以在树莓派上运行,读了不少hung
     之前分别用numpy实现了mlp,cnn,lstm和bert模型,这周顺带搞一下GPT-2,纯numpy实现,最重要的是可在树莓派上或其他不能安装pytorch的板子上运行,生成数据gpt-2的mask-multi-headed-self-attention我现在才彻底的明白它是真的牛逼,比bert的multi-headed-self-attention牛的不是一点半点,......
  • 【开源分享】在线客服系统源码,支持发送文本表情,上传图片附件附详细搭建教程
    源码介绍golang开发的单用户在线客服系统,功能非常的简洁实用,没有多余的功能。golang语言可编译为二进制程序,自带守护进程功能,相比于流传最广的PHP客服系统要稳定环境配置服务器:linux或者windows都可以golang运行环境MySQLNginx配置Golang环境Windows系统首先下载golang......
  • Nacos服务发现与注册源码剖析
    为什么要看源码:1、提升技术功底:学习源码里的优秀设计思想,比如一些疑难问题的解决思路,还有一些优秀的设计模式,整体提升自己的技术功底2、深度掌握技术框架:源码看多了,对于一个新技术或框架的掌握速度会有大幅提升,看下框架demo大致就能知道底层的实现,技术框架更新再快也不怕3、快速......
  • 手把手教你自定义自己SpringBoot Starter组件源码剖析
    我们知道SpringBootStarter也就是启动器。是SpringBoot组件化的一大优点。基于这个思想,基于这个思想SpringBoot才变得非常强大,官方给我们提供很多开箱即用的启动器。SpringBootStarter是SpringBoot的一个重要特性,它有以下优点:依赖管理:Starter自动处理项目的依赖关系,......
  • 源码分析 | MySQL测试框架 MTR 系列教程(三):源码篇
    作者:卢文双资深数据库内核研发序言:以前对MySQL测试框架MTR的使用,主要集中于SQL正确性验证。近期由于工作需要,深入了解了MTR的方方面面,发现MTR的能力不仅限于此,还支持单元测试、压力测试、代码覆盖率测试、内存错误检测、线程竞争与死锁等功能,因此,本着分享的精神,将其......
  • 在centos8中源码部署LAMP
    源码部署LAMP一、安装httpd在官网下载安装包http://archive.apache.org/[root@localhost~]#wgethttp://archive.apache.org/dist/apr/apr-1.7.4.tar.gz[root@localhost~]#wgethttp://archive.apache.org/dist/apr/apr-util-1.6.3.tar.gz[root@localhost~]#wgethttp:......
  • A008 《变形记》编程 源码
    一、课程介绍本节课将通过修改画笔的外形,创作一些有趣的作品。二、知识重难点解析画笔外形shape()画笔调用shape()方法,可以设置画笔“外形”,默认是classic,其他形状如下:如:importturtlep=turtle.Pen()p.shape('circle')#画笔设置成“圆”外形turtle.done()添加外形a......