|
注意:下载的时候,直接用下载工具下载,或者直接点击连接下载,
不要在连接上右键选择“另存为”来下载,这样网站的防盗链功能将生效,下载下来的结果是一个gif图片,这个问题我也觉得很烦,但我的空间供应商就是这样
做的,我也没有办法!
在vb和.net等非常高级的语言的开发环境下,横坐标类型将会被
映射为时间对象(比如DateTime),时间对象有一个致命弱点就是范围很小,当横坐标按值显示的时候,二次开发者可能需要突破时间对象的范围限制,此时请
向我索取double版本控件,我将修改控件的idl,以便在二次开发的时候,横坐标类型被映射为double,这个范围就足够大了;至于为什么要用double而不用float,
则是为了编程的方便,因为在vc中,时间就是一个double,这样我的代码就完全一样,只是修改一下idl即可。double版本下同样支持时间对象,调用DateTime
的ToAODate()方法就得到对应的double数据了(由此可见,在这些高级语言中,时间对象可能也是一个double,只是包装了一下,不像vc那么直接);
vc二次开发就没有上面的烦恼,在vc中,横坐标类型将被映射为DATE,而DATE就是double(typedef double DATE;)。
初学者请关注这一栏
考虑到初学者可能会缺少一些运行库,或者无法编译demo源代码,我特意做了一个安装包,大家下载下来后解压即得到,双击安装即可,完了后会在开始菜单里创建一个指向开发文档和demo工程文件的快捷方式。在卸载的时候,可以卸载完全的,包括注册表里面的注册项,不用担心留下垃圾。
ST_Curve(普通版本,vc2010编译,只能运行于win xp sp2及其以上系统)
ST_Curve_EN(普通英文版本,vc2010编译,只能运行于win xp sp2及其以上系统)
ST_Curve_VC7(兼容版本,vc2003编译,可运行于win2000及其以上系统,推荐在普通版本无法使用时才使用)
由于不常使用,以上版本均不包括:所有文档的所有格式包、depends工具及gdi+组件,有需要者请下载
有经验者请关注这一栏
如果不想安装,请下载开发包,它是一个rar压缩包,使用者需要对控件主程序ST_Curve.ocx注册。
ST_Curve(普通版本,vc2010编译,只能运行于win xp sp2及其以上系统)
ST_Curve_EN(普通英文版本,vc2010编译,只能运行于win xp sp2及其以上系统)
ST_Curve_VC7(兼容版本,vc2003编译,可运行于win2000及其以上系统,推荐在普通版本无法使用时才使用)
以上版本均不包括:MFC71组件包、MFC100组件包
更多下载地址(只列了几个大的网站,其它的下载地址请自行搜索,都是vc2010中文版压缩包):
华军:www.onlinedown.net/soft/70445.htm
天空:www.skycn.com/soft/47270.html
霏凡软件站:www.crsky.com/soft/14069.html
硅谷动力:download.enet.com.cn/html/040332008081701.html
太平洋电脑网下载中心:dl.pconline.com.cn/download/52966.html
更新事宜及开发举例:
请大家定时调用控件的接口CheckUpdate来确定当前是否有最新的控件,如果有,强烈建议下载并覆盖现有的控件,也建议大家重新将控件添加到工程,因为有可能接口会改变,大家多注意一下开发文档后面的修改日志,接口修改肯定会有说明的。
下面我简单讲一下控件的开发流程,以帮助大家迅速的看到效果,更详细的开发需要你仔细的阅读开发文档。 首先是调用AddLegendHelper函数添加图例,然后调用AddMainData函数添加曲线点(这两步的先后关系无所谓),比如:
[c/c++ code]
m_ST_Curve.AddLegendHelper(11, _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(11, Time, 90 + .6f * i, 0, 0, TRUE);
Time += 1.0 / 24 / 2;
}
[c/c++ code]
至此,如果你可以看到曲线,那么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,可隐式转换。 |