VC6中调用ProEssentialsv5图表组件实现科学图表绘制_第1页
VC6中调用ProEssentialsv5图表组件实现科学图表绘制_第2页
VC6中调用ProEssentialsv5图表组件实现科学图表绘制_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VC6中调用ProEssentialsv5图表组件实现科学图表绘制    1  ProEssentials v5简介:ProEssentials v5是应用于windows 服务器端和客户端开发的一系列图表组件,它是对绘制图表以及图表分析功能所需要的数据和方法的简单封装。可以提供Winforms、Webforms、ActiveX、VCL和DLL五种界面。它的图表类型很多,包括:一般图表、科学图表、3维图表、极坐标图表、饼状图表,几乎覆盖了所有常见的图表类型。我们可以很方便的调用ProEssentials v5的函数库,添加绘制图表的功能,并可以

2、对图表进行分析,如:回归,求最大值,拟合曲线等。我们还可以很方便的将图表文件的数据文件进行保存,或者导出我们希望格式的图片,如bmp、jpg、png。注:一般图表与科学图表之间的区别在于,一般图表仅提供一维坐标数据绘图,而另一维坐标数据是等间距的。科学图表提供二维坐标数据,绘制任意的散点数据。2  具体应用方法:(1)无论开发的是OCX的应用程序、DLL的应用程序还是VCL的应用程序,首先要做的就是根据开发环境的操作系统类型,拷贝PEGRP32C.DLL到相应的在本地硬盘系统盘中去。如果是win95或者win98操作系统,拷贝PEGRP32C.DLL到System目录下;如果是win

3、2000操作系统,拷贝PEGRP32C.DLL到System32目录下。PEGRAPHS.HLP文件是可选的(2)工程里面添加头文件Pegrpapi.h。选择需要调用的函数,完成图表的绘制功能。在此简介,ProEssentials v5函数和变量的命名规则。以PEP_为前缀的变量类型如下:PEP_b      Boolean (4 bytes)PEP_n      Integer (4 bytes)PEP_dw      Double Word

4、(4 bytes)PEP_sz      Null Terminated array of characters.PEP_f      Single (4 bytes) or Double (8 bytes) floating point.PEP_na      Array of Integer (4 bytes)PEP_dwa      Array of Double Word (4 bytes

5、)PEP_sza      Array of Null Terminated strings.PEP_fa      Array of Single (4 bytes) or Double (8 bytes) floating point.PEP_struct      Various structures要用DLL调用来设定获取以上变量类型的值,可以根据以上变量类型的前缀来判断应该:PEP_b    &#

6、160; PEnset / PEngetPEP_n      PEnset / PEngetPEP_dw      PElset / PElget (16 bit)  PEnset / PEnget (32 bit)PEP_sz      PEszset / PEszget.PEP_f      PEvset / PEvgetPEP_na    &

7、#160; PEvset, PEvsetcell, PEvsetcellEx / PEvget, PEvgetcell, PEvgetcellExPEP_dwa      PEvset, PEvsetcell, PEvsetcellEx / PEvget, PEvgetcell, PEvgetcellExPEP_sza      PEvset, PEvsetcell, PEvsetcellEx / PEvget, PEvgetcell, PEvgetcellExPEP_fa  

8、;    PEvset, PEvsetcell, PEvsetcellEx / PEvget, PEvgetcell, PEvgetcellExPEP_struct      PEvset, / Pevget(3)选择适当的变量,将数据赋予这些变量。一般图表需要给PEP_faYDATA 、PEP_szaPOINTLABELS赋值。科学图表和极坐标图表需要給PEP_faXDATA 、PEP_faYDATA和 PEP_faZDATA赋值。3D的科学图表需要给PEP_faXDATA, PEP_faYDATA, 

9、 PEP_faZDATA赋值,但是3D的柱状图仅需要PEP_faYDATA。饼状图用PEP_faXDATA 来控制“饼”的厚度,有以下的几个DLL函数可以为图表赋值:PEvset ():一次可以全部的完成所有数据的赋值。PEvsetEx ():一次可以完成部分数据的赋值。.Pevsetcell():一次仅可以为一维数据赋值。PevsetcellEx():一次仅可以为一个点赋值。因此Pevset()是最快的赋值方法。(4)选择选择图表中线(点)颜色的方法颜色是由PEP_dwaSUBSETCOLORS控制的,线型是由PEP_naSUBSETLINETYPES控制的,点型是由PEP_naSUBSET

10、POINTTYPES控制的。以下代码是在C/C+中实现线型设定方法。int nTmpStyles3;nTmpStyles0 = PELT_THINSOLID;nTmpStyles1 = PELT_DASH;nTmpStyles2 = PELT_DOT;PEvset(hPE, PEP_naSUBSETLINETYPES, nTmpStyles, 3);注:以上代码使用的Pevset()函数,也可以使用Pevsetcell()函数来实现线型的设定方法。代码如下:int nTmpStyle;nTmpStyle = PELT_THINSOLID;PEvsetcell(hPE, PEP_naSUBSET

11、LINETYPES, 0, &nTmpStyle);nTmpStyle = PELT_DASH;PEvsetcell(hPE, PEP_naSUBSETLINETYPES, 1, &nTmpStyle); nTmpStyle = PELT_DOT;PEvsetcell(hPE, PEP_naSUBSETLINETYPES, 2, &nTmpStyle);其他设定颜色和点类型的方法与以上方法类似,在此不再赘述。3  实现结果:绘制了一个科学图表,带游标和坐标显示功能,以下函数分别实现基本图表功能和游标显示功能。void CPEView:CreateSimpleS

12、Graph()      RECT rect;   GetClientRect( &rect ) m_hPE = PEcreate(PECONTROL_SGRAPH, WS_VISIBLE, &rect, m_hWnd, 1001);   if( m_hPE )          float fY;       float fX; 

13、      / 设置子集数和每个子集的点数 /       PEnset(m_hPE, PEP_nSUBSETS, 4);             PEnset(m_hPE, PEP_nPOINTS, 12);             for( int s=0; s&l

14、t;=3; s+ )                  for( int p=0; p<=11; p+ )                            &

15、#160;                                                  

16、   fX = (float) (p+1) * 100.0F;               PEvsetcellEx (m_hPE, PEP_faXDATA, s, p, &fX);               fY = (float) (p+1) * 1.0F) + GetRandom(1

17、, 250);               PEvsetcellEx (m_hPE, PEP_faYDATA, s, p, &fY);                         / 设置阴影   

18、    PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_SHADOWS);       PEszset(m_hPE, PEP_szMAINTITLE, "Example Data");       PEszset(m_hPE, PEP_szSUBTITLE, ""); / no subtitle       PEszset

19、(m_hPE, PEP_szYAXISLABEL, "Units Sold");       PEszset(m_hPE, PEP_szXAXISLABEL, "Month");       PEnset(m_hPE, PEP_bFOCALRECT, FALSE);       PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE); 

20、0;     PEnset(m_hPE, PEP_bCACHEBMP, TRUE);       PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_POINTSPLUSSPLINE);       PEnset(m_hPE, PEP_nGRIDLINECONTROL, PEGLC_NONE);       PEnset(m_hPE, PEP_nA

21、LLOWZOOMING, PEAZ_HORZANDVERT);       PEnset(m_hPE, PEP_nZOOMSTYLE, PEZS_RO2_NOT);       / 子集的标识       PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 0, "Texas" );       PEvsetc

22、ell( m_hPE, PEP_szaSUBSETLABELS, 1, "Florida" );       PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 2, "Washington" );       PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 3, "California" );     &#

23、160; / 子集点的颜色s       DWORD dwArray4 = RGB(198,0,0), RGB( 0, 198, 198 ), RGB( 198,198,0 ), RGB( 0,198,0 ) ;       PEvsetEx( m_hPE, PEP_dwaSUBSETCOLORS, 0, 4, dwArray, 0 );       / 子集点的线型    &

24、#160;  int nLineTypes = PELT_MEDIUMSOLID, PELT_MEDIUMSOLID, PELT_MEDIUMSOLID, PELT_MEDIUMSOLID ;       PEvset(m_hPE, PEP_naSUBSETLINETYPES, nLineTypes, 4);       / 子集点的类型       int nPointTypes = PEPT_DOTSO

25、LID, PEPT_UPTRIANGLESOLID, PEPT_SQUARESOLID, PEPT_DOWNTRIANGLESOLID ;       PEvset(m_hPE, PEP_naSUBSETPOINTTYPES, nPointTypes, 4)       / Version 4.0 功能 /       PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);  

26、     PEnset(m_hPE, PEP_bSIMPLEPOINTLEGEND, TRUE);       PEnset(m_hPE, PEP_bSIMPLELINELEGEND, TRUE);       PEnset(m_hPE, PEP_nLEGENDSTYLE, PELS_1_LINE);       PEnset(m_hPE, PEP_nMULTIAXISSTYL

27、E, PEMAS_SEPARATE_AXES);       / 设置其他属性 /       PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);       PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_NO_BORDER);       PEnset(m_hPE, PEP_n

28、GRADIENTBARS, 8);       PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);       PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);       PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);       PEnset(m

29、_hPE, PEP_bLABELBOLD, TRUE);       PEnset(m_hPE, PEP_bLINESHADOWS, TRUE);       PEnset(m_hPE, PEP_nFONTSIZE, PEFS_LARGE);       PEnset(m_hPE, PEP_bSCROLLINGHORZZOOM, TRUE);   void CPEView:CreateDataCu

30、rsor()          CreateSimpleSGraph();   / 创建游标 /   PEnset(m_hPE, PEP_nCURSORMODE, PECM_DATACROSS);   /  可以方便的查看数据点/   PEnset(m_hPE, PEP_bMARKDATAPOINTS, TRUE);   / 可以点击数据点来移动游标 /   PEnset(m_hPE,

31、PEP_bMOUSECURSORCONTROL, TRUE);   PEnset(m_hPE, PEP_bALLOWDATAHOTSPOTS, TRUE);   / Cursor prompting in top left corner /   PEnset(m_hPE, PEP_bCURSORPROMPTTRACKING, TRUE);   PEnset(m_hPE, PEP_nCURSORPROMPTSTYLE, PECPS_XYVALUES);   PEnset(m_hPE, PEP_nC

32、URSORPROMPTLOCATION, PECPL_TOP_RIGHT);   / 取消放大功能   PEnset(m_hPE, PEP_nALLOWZOOMING, PEAZ_NONE);   / 其他可能的游标模式如下:   / PECM_NOCURSOR = 0   / PECM_POINT = 1   / PECM_DATACROSS = 2   / PECM_DATASQUARE = 3   / PECM_FLOATINGY

33、 = 4   / PECM_FLOATINGXY = 5   / 注意:必须重新初始化     else if (m_nLastSelection = 105) && (HIWORD(wp) = PEWN_CURSORMOVE)                 int nSubset, nPoint;           float xvalue, yvalue;           char buffer64;       &#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论