加入CODE CHINA

· 不限速    · 不限空间    · 不限人数    · 私仓免费

免费加入
README.md

ST_Curve

专业的曲线、折线、柱状图绘制控件(ActiveX),高效灵活,可深度定制,支持插件开发。

一:什么是ST_Curve?

ST_Curve是一个专业的曲线绘制控件,只要是xy坐标系的曲线,都可绘制,纵坐标只能显示为值,横坐标可以显示为值或者时间(如果你愿意为控件提供插件,则坐标可显示任意字符)。

二:ST_Curve面向对象?

二次开发者,即你必须要对ST_Curve进行开发,它才能使用,就像现在流行的诸多界面库一样。

三:ST_Curve有什么使用与分发限制?

使用无任何限制,分发时,必须保证控件的完整性,包括但不限于主控件、开发文档等。

四:ST_Curve的特点与优势(对用户)

鼠标任意拖动曲线,任意缩放曲线,定点(鼠标取点或者二次开发者传入点)缩放曲线,支持类似K线图的缩放方式,数字键快速找到曲线,F5键居中曲线,F4键显示隐藏帮助(帮助显示于背景图之上,帮助上会有更多的快捷键,这里不一一列出了),支持方向键,翻页键等,可显示三维效果,可显示全局位置预览窗口并通过它快速移动曲线。

五:ST_Curve的特点与优势(对开发者,只说说几个重点,其它的请看开发文档)

自定义各种颜色,字体,背景,画笔,填充模式等,可切换坐标原点到窗口四个角的任意一个,可导出图片(bmp、png、jpg、gif),可批量导出图片,以及定时导出图片,可导入图片作为背景或者用于填充曲线,可导出曲线到文件(支持二进制文件,它速度最快,还支持文本文件,它的好处是可以手动编辑,支持的文本格式包括:ansi、unicode、unicode big endian、utf8,这些文本格式都被windows支持),可绘制实时曲线(曲线自动滚动),支持在各个方向上对曲线进行填充,支持打印,打印或者导出图片时,可指定只对某一条曲线,或某一段数据;支持注解显示;支持数据持久化;支持批量添加数据。

六:开发举例

下面我简单讲一下控件的开发流程,以帮助大家迅速的看到效果,更详细的开发需要你仔细的阅读开发文档。 首先是调用AddLegendHelper函数添加图例,然后调用AddMainData函数添加曲线点(这两步的先后关系无所谓),比如: m_ST_Curve.AddLegendHelper(1, _T("第一条曲线"), (unsigned long) RGB(255, 255, 0), PS_SOLID, 1, FALSE); COleDateTime Time = COleDateTime::GetCurrentTime(); for (int i = 0; i < 5; i++) { m_ST_Curve.AddMainData2(1, Time, 90 + .6f * i, 0, 0, TRUE); Time += 1.0 / 24 / 2; } 至此,如果你可以看到曲线,那么ST_Curve控件就是我写的,如果看不到,我也不知道是谁写的!

考虑到初学者老是问如何用COleDateTime和COleDateTimeSpan表达浮点数,我这里给一个统一的解释: COleDateTimeSpan代表一个时间间隔,它是用浮点数来表达的,所以他们可以隐式转换(COleDateTimeSpan重载了operator double),表达的方式是1.0代表一天,其它时间间隔以此类推,比如: 1小时 = 1.0 / 24 1分钟 = 1.0 / 24 / 60 1秒钟 = 1.0 / 24 / 60 / 60 0.5秒钟 = 1秒钟的二分之一 …… COleDateTime代表一个日期,从1899.12.30开始,即1899.12.30等于0,如果是1899.12.31呢,当然就加一天,而一天刚才说过了,等于1.0,所以1899.12.31就是1.0。 可以直接将double数据赋给COleDateTimeSpan或者COleDateTime,可隐式转换。

七:编译

本控件需要Lua,自带5.3.4版本的lib文件,vc++ 15.7.0编译,如果你的编译器不是15.7.0版本,需要自行从 https://www.lua.org/ 下载并编译,打开解决方案之后,如果提示Windows SDK版本不正确,请自行切换到你自己的版本(我的环境下是 Windows SDK 10.0.17134.0),如果想在低于vc++ 15.7.0版本下编译,请创建一个MFC ActiveX工程,然后将代码拷贝过去。

八:进一步说明

本控件是10多年前我刚参加工作时开始写的,鉴于当时的水平,在组织框架上,可读性上都有很大的不足,仅仅是考虑了效率优先(当时的机器配置也有限),还请大家见谅。这么多年过去,我只能说其稳定性还是很不错,功能也足够强大,如果你要修改它,最好先读懂它。

九:联系我

QQ群:132339384,支持定制服务。

项目简介

基于MFC ActiveX的工控曲线、折线、柱状图绘制控件。

发行版本

当前项目没有发行版本

贡献者 1

Y youngwolf @youngwolf

开发语言

  • C++ 89.6 %
  • C 10.1 %
  • Lua 0.4 %