锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / COM/ActiveX控件系列培训 / 曲线ActieX控件演示
导航
安装包
演示视频
测试代码
服务方向
软件开发
办公财务MIS
股票
设备监控
网页信息采集及控制
多媒体
软件开发培训
Java 安卓移动开发
Java Web开发
HTML5培训
iOS培训
网站前端开发
VC++
C++游戏开发培训
C#软件
C语言(Linux)
ASP.NET网站开发(C#)
C#软件+ASP.NET网站
SOCKET网络通信开发
COMOLE和ActiveX开发
C++(Linux)
汇编和破解
驱动开发
SkinMagicVC++换肤
流媒体开发
MicroStation二次开发
计算机英语翻译
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

 

1介绍

本曲线控件用于一个硬件设备监控软件,以多条件曲线方式显示设备里的通信参数变化。采用GDI+进行图形绘制,界面漂亮美观。支持多条曲线的同时绘制,初始化和数据添加接口使用方便。

1.1曲线的方便性

数据输入方便

如可以在图形上直接点选对应点进行移动,松开后图形自动拟合;如可以整个浏览和修改某条曲线的数据,修改时曲线自动刷新。并且要和代码使用方便结合到一起。

各种设置方便

在完整性里提到的功能要都有接口。配置界面全面易用,对分析出来的各种对象都可以在图形界面里双击修改,对线属性的设置,如颜色、线型、粗细等等参考Word和其它软件里的实现方式,达到直观高效。

通过代码使用方便

对功能提供各种接口,如单一类的接口,复合类的接口。单一类的接口使某个局部操作实现容易,复合类的接口使成组功能一次完成。

1.2曲线的完整性

功能的完整:

Y轴的显示比例动态可调,曲线区域全屏(第二版本实现),标志点实现(在TopX上点击确定,第二版本实现),曲线外观实现(包括锯齿类,波形类, 实底线类,带矩形柱类,第二版本实现),X轴和Y轴的区域放大和区域缩小实现及曲线对应部分的加亮实现(第二版本中实现),曲线锁定(第二版本实现),数据的文件输出和输入实现,打印实现(第二版本实现),非法数据的指示(第二版本实现),线型全,上右刻度指示,Grid显示,各种设置功能(如线型和字体)。

分析的完整:

涉及到的对象有:X轴:代表总长度,主刻度,子刻度,刻度字体;X轴名称,指示点位置:X轴名称图形;Y轴:代表总长度,主刻度,子刻度,刻度字体;Y轴名称:Y轴名称图形;TopX刻度:主刻度,刻度字体;RightY刻度:主刻度,刻度字体;原点:原点图形,原点名称,原点位置;标题:一般是曲线的名称;打印机:打印功能要逐步测试,不能到最后再考虑;Grid。这里只是初步的列举,详细的对象及类会在后面指明。

数据的完整性

不能以整型来组织数据,至少以float型,以后再考虑外部能不能确定使用何种类型来保存数据。

1.3曲线的漂亮性

颜色搭配

背景色、各种轴的颜色、Grid的颜色、字体的颜色、标题的颜色、疧注的颜色和标志点的颜色都要讲究。

配置界面

具备时尚大方吸引人的特点,给人以美感。

线输出

给用户提供设置,在设置后可使绘图区域的曲线段具备一定的修饰能力,使曲线看起来流畅。

1.4曲线的高效性

使用新技术,优化绘制算法。

2安装

3初步测试

4代码测试

4.1曲线初始化代码

CString fontName("宋体");

m_c1.StartAdd(2);//开始添加曲线个数

for(int i=0;i<2;i++) {//每个曲线项初始化循环

CString sNameBefore;

sNameBefore.Format("测试%d",i);//获取名称

//i%5作为线型i/5作为颜色

m_c1.SetNewItemOne(i,sNameBefore);//设置名称

m_c1.SetNewItemOneLineShort(i,0,(double)dbColor[i],2);//设置线形

m_c1.SetNewItemOneFont(i,(double)dbColor[i/5],0,fontName,8,0,0,0x00004000,1);//设置字体

}

m_c1.EndAdd();//添加结束

m_c1.SetXAxisName("时间");//设置X轴名称

m_c1.SetYAxisName("随机数");//设置Y轴名称

m_c1.SetNewXStep(2);//设置X轴刷新时间间隔

CString sName("M");

m_c1.SetYAdjustWay(3);//设置Y轴自动调整方法

m_c1.SetYScaleUnitAndName(1024*1024,sName);//设置Y轴长度

if(!m_c1.SetYTotalLenByShowItem()) {

double lTemp=10*1024*1024;

m_c1.SetYTotalLen64(lTemp);

}

m_c1.Invalidate();//刷新

4.2曲线添加数据代码

在定时器代码里加上:

unsigned long lseed1=(unsigned)(time(NULL)%8333);//用时间获取第一个随机种子

unsigned long lseed2=(unsigned)(time(NULL)%3333);//用时间获取第二个随机种子

double *fData;

srand(lseed1);

fData=new double[2];//分配数据

fData[0]=rand();

srand(lseed2);

fData[1]=rand();

m_c1.AppendAllItemData(fData,2,true);//添加数据

5代码示例

BOOL CCurveCtrl::AppendAllItemData(double * pfData, short lDataCount,BOOL bInvalidate)

{

// TODO: Add your dispatch handler code here

int iItemCount=m_curveTotal.m_AryCurve.GetSize();

if(iItemCount!=lDataCount) {//判断曲线个数和数据个数是否一致

CString sTemp;

sTemp.Format(_T("一次向所有曲线单元添加数据时,曲线个数%d和数据个数%d不一致"),iItemCount,lDataCount);

MessageBox(sTemp);

return FALSE;

}

for(int i=0;i<iItemCount;i++) {

CCurveItem *pItem=NULL;

pItem=m_curveTotal.m_AryCurve.GetAt(i);//获取曲线项

if(!pItem) {

MessageBox(_T("一次向所有曲线单元添加数据时,遇到空指针"));

return FALSE;

}

pItem->AppendData(&pfData[i],1);//通过项指针添加数据

}

COleDateTime odtTemp;

odtTemp=COleDateTime::GetCurrentTime();

m_curveTotal.m_XAxis.SetEndTime(odtTemp);//刷新X轴

if(bInvalidate) Invalidate();//如果要求刷新,则刷新窗口

return TRUE;

}

友情链接
版权所有 Copyright(c)2004-2015 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州市文化路47号院1号楼4层(47-1楼位于文化路和红专路十字路口东北角,郑州大学工学院招待所南边,工学院科技报告厅西边。)