论文发表指导_期刊投稿推荐_期刊论文发表咨询_职称驿站

论文发表指导,期刊推荐,国际出版

职称驿站学术导航
关闭职称驿站导航

论文发表职称晋升 全方位咨询服务

学术出版,国际教著,国际期刊,SCI,SSCI,EI,SCOPUS,A&HCI等高端学术咨询

VC6中调用ProEssentials v5图表组件实现科学图表绘制

来源:职称驿站所属分类:计算机应用论文
发布时间:浏览:34次

   职称驿站是一个专业致力于期刊征稿、论文发表、写作指导、文献参考等服务项目的综合服务网站。“鸣”取“一鸣惊人”之意,作为论文服务行业的后起之秀,我们为客户提供了权威、快捷、全面的服务。

  如果您有论文发表方面的需要和疑问点这里

  1 ProEssentials v5简介:

  ProEssentials v5是应用于windows 服务器端和客户端开发的一系列图表组件,它是对绘制图表以及图表分析功能所需要的数据和方法的简单封装。可以提供Winforms、Webforms、ActiveX、VCL和DLL五种界面。它的图表类型很多,包括:一般图表、科学图表、3维图表、极坐标图表、饼状图表,几乎覆盖了所有常见的图表类型。我们可以很方便的调用ProEssentials v5的函数库,添加绘制图表的功能,并可以对图表进行分析,如:回归,求最大值,拟合曲线等。我们还可以很方便的将图表文件的数据文件进行保存,或者导出我们希望格式的图片,如bmp、jpg、png。注:一般图表与科学图表之间的区别在于,一般图表仅提供一维坐标数据绘图,而另一维坐标数据是等间距的。科学图表提供二维坐标数据,绘制任意的散点数据。

  2 具体应用方法:

  (1)无论开发的是OCX的应用程序、DLL的应用程序还是VCL的应用程序,首先要做的就是根据开发环境的操作系统类型,拷贝PEGRP32C.DLL到相应的在本地硬盘系统盘中去。如果是win95或者win98操作系统,拷贝PEGRP32C.DLL到System目录下;如果是win2000操作系统,拷贝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 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)

  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 PEnset / PEnget

  PEP_n PEnset / PEnget

  PEP_dw PElset / PElget (16 bit) PEnset / PEnget (32 bit)

  PEP_sz PEszset / PEszget.

  PEP_f PEvset / PEvget

  PEP_na PEvset, PEvsetcell, PEvsetcellEx / PEvget, PEvgetcell, PEvgetcellEx

  PEP_dwa PEvset, PEvsetcell, PEvsetcellEx / PEvget, PEvgetcell, PEvgetcellEx

  PEP_sza PEvset, PEvsetcell, PEvsetcellEx / PEvget, PEvgetcell, PEvgetcellEx

  PEP_fa PEvset, PEvsetcell, PEvsetcellEx / PEvget, PEvgetcell, PEvgetcellEx

  PEP_struct PEvset, / Pevget

  (3)选择适当的变量,将数据赋予这些变量。

  一般图表需要给PEP_faYDATA 、PEP_szaPOINTLABELS赋值。

  科学图表和极坐标图表需要給PEP_faXDATA 、PEP_faYDATA和 PEP_faZDATA赋值。

  3D的科学图表需要给PEP_faXDATA, PEP_faYDATA, PEP_faZDATA赋值,但是3D的柱状图仅需要PEP_faYDATA。

  饼状图用PEP_faXDATA 来控制“饼”的厚度,

  有以下的几个DLL函数可以为图表赋值:

  PEvset ():一次可以全部的完成所有数据的赋值。

  PEvsetEx ():一次可以完成部分数据的赋值。.

  Pevsetcell():一次仅可以为一维数据赋值。

  PevsetcellEx():一次仅可以为一个点赋值。

  因此Pevset()是最快的赋值方法。

  (4)选择选择图表中线(点)颜色的方法

  颜色是由PEP_dwaSUBSETCOLORS控制的,线型是由PEP_naSUBSETLINETYPES控制的,点型是由PEP_naSUBSETPOINTTYPES控制的。

  以下代码是在C/C++中实现线型设定方法。

  int nTmpStyles[3];

  nTmpStyles[0] = PELT_THINSOLID;

  nTmpStyles[1] = PELT_DASH;

  nTmpStyles[2] = PELT_DOT;

  PEvset(hPE, PEP_naSUBSETLINETYPES, nTmpStyles, 3);

  注:以上代码使用的Pevset()函数,也可以使用Pevsetcell()函数来实现线型的设定方法。代码如下:

  int nTmpStyle;

  nTmpStyle = PELT_THINSOLID;

  PEvsetcell(hPE, PEP_naSUBSETLINETYPES, 0, &nTmpStyle);

  nTmpStyle = PELT_DASH;

  PEvsetcell(hPE, PEP_naSUBSETLINETYPES, 1, &nTmpStyle);

  nTmpStyle = PELT_DOT;

  PEvsetcell(hPE, PEP_naSUBSETLINETYPES, 2, &nTmpStyle);

  其他设定颜色和点类型的方法与以上方法类似,在此不再赘述。

  3 实现结果:

  绘制了一个科学图表,带游标和坐标显示功能,以下函数分别实现基本图表功能和游标显示功能。

  void CPEView::CreateSimpleSGraph()

  {

  RECT rect;

  GetClientRect( &rect )

  m_hPE = PEcreate(PECONTROL_SGRAPH, WS_VISIBLE, &rect, m_hWnd, 1001);

  if( m_hPE )

  {

  float fY;

  float fX;

  // 设置子集数和每个子集的点数 //

  PEnset(m_hPE, PEP_nSUBSETS, 4);

  PEnset(m_hPE, PEP_nPOINTS, 12);

  for( int s=0; s<=3; s++ )

  { for( int p=0; p<=11; p++ )

  {

  fX = ((float) (p+1)) * 100.0F;

  PEvsetcellEx (m_hPE, PEP_faXDATA, s, p, &fX);

  fY = ((float) (p+1) * 1.0F) + GetRandom(1, 250);

  PEvsetcellEx (m_hPE, PEP_faYDATA, s, p, &fY);

  }

  }

  // 设置阴影

  PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_SHADOWS);

  PEszset(m_hPE, PEP_szMAINTITLE, Example Data);

  PEszset(m_hPE, PEP_szSUBTITLE, ); // no subtitle

  PEszset(m_hPE, PEP_szYAXISLABEL, Units Sold);

  PEszset(m_hPE, PEP_szXAXISLABEL, Month);

  PEnset(m_hPE, PEP_bFOCALRECT, FALSE);

  PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);

  PEnset(m_hPE, PEP_bCACHEBMP, TRUE);

  PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_POINTSPLUSSPLINE);

  PEnset(m_hPE, PEP_nGRIDLINECONTROL, PEGLC_NONE);

  PEnset(m_hPE, PEP_nALLOWZOOMING, PEAZ_HORZANDVERT);

  PEnset(m_hPE, PEP_nZOOMSTYLE, PEZS_RO2_NOT);

  // 子集的标识

  PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 0, Texas );

  PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 1, Florida );

  PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 2, Washington );

  PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 3, California );

  // 子集点的颜色s

  DWORD dwArray[4] = { 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 );

  // 子集点的线型

  int nLineTypes[] = { PELT_MEDIUMSOLID, PELT_MEDIUMSOLID, PELT_MEDIUMSOLID, PELT_MEDIUMSOLID };

  PEvset(m_hPE, PEP_naSUBSETLINETYPES, nLineTypes, 4);

  // 子集点的类型

  int nPointTypes[] = { PEPT_DOTSOLID, PEPT_UPTRIANGLESOLID, PEPT_SQUARESOLID, PEPT_DOWNTRIANGLESOLID };

  PEvset(m_hPE, PEP_naSUBSETPOINTTYPES, nPointTypes, 4)

  // Version 4.0 功能 //

  PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);

  PEnset(m_hPE, PEP_bSIMPLEPOINTLEGEND, TRUE);

  PEnset(m_hPE, PEP_bSIMPLELINELEGEND, TRUE);

  PEnset(m_hPE, PEP_nLEGENDSTYLE, PELS_1_LINE);

  PEnset(m_hPE, PEP_nMULTIAXISSTYLE, PEMAS_SEPARATE_AXES);

  // 设置其他属性 //

  PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);

  PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_NO_BORDER);

  PEnset(m_hPE, PEP_nGRADIENTBARS, 8);

  PEnset(m_hPE, PEP_nTEXTSHADOWS, PETS_BOLD_TEXT);

  PEnset(m_hPE, PEP_bMAINTITLEBOLD, TRUE);

  PEnset(m_hPE, PEP_bSUBTITLEBOLD, TRUE);

  PEnset(m_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::CreateDataCursor()

  {

  CreateSimpleSGraph();

  // 创建游标 //

  PEnset(m_hPE, PEP_nCURSORMODE, PECM_DATACROSS);

  // 可以方便的查看数据点//

  PEnset(m_hPE, PEP_bMARKDATAPOINTS, TRUE);

  // 可以点击数据点来移动游标 //

  PEnset(m_hPE, 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_nCURSORPROMPTLOCATION, PECPL_TOP_RIGHT);

  // 取消放大功能

  PEnset(m_hPE, PEP_nALLOWZOOMING, PEAZ_NONE);

  // 其他可能的游标模式如下:

  // PECM_NOCURSOR = 0

  // PECM_POINT = 1

  // PECM_DATACROSS = 2

  // PECM_DATASQUARE = 3

  // PECM_FLOATINGY = 4

  // PECM_FLOATINGXY = 5

  // 注意:必须重新初始化

  else if ((m_nLastSelection == 105) && (HIWORD(wp) == PEWN_CURSORMOVE))

  { int nSubset, nPoint;

  float xvalue, yvalue;

  char buffer[64];

  nSubset = PEnget(m_hPE, PEP_nCURSORSUBSET);

  nPoint = PEnget(m_hPE, PEP_nCURSORPOINT);

  PEvgetcellEx(m_hPE, PEP_faXDATA, nSubset, nPoint, &xvalue);

  PEvgetcellEx(m_hPE, PEP_faYDATA, nSubset, nPoint, &yvalue);

  sprintf(buffer, Cursor at %d,%d=(%.2f, %.2f), nSubset, nPoint, xvalue, yvalue);

  CWnd* pParent = GetParent()->GetParent();

  if (pParent) {pParent->SetWindowText(buffer);}

  pParent = AfxGetMainWnd();

  if (pParent) {pParent->SetWindowText(PEWN_CURSORMOVE);

  return TRUE;

  }

  }

  以上代码在Win2000,VC6环境下调试通过。

《VC6中调用ProEssentials v5图表组件实现科学图表绘制》

本文由职称驿站首发,您身边的高端学术顾问

文章名称: VC6中调用ProEssentials v5图表组件实现科学图表绘制

文章地址: https://m.zhichengyz.com/p-23981

相关内容推荐
专著出版价格影响因素
只取得了书号,就一定公开出版了么
Journal of the Indian Society of Remote Sensing容易中稿吗
副高专业技术职称sci论文可以吗
Journal of Medical Virology是sci吗
进职称论文可以用综述论文吗
国际出版社出版的专著能够用来评职称吗
老师出专著需要多长时间,多少钱
未能解决您的问题?马上联系学术顾问

未能解决您的问题?

不要急哦,马上联系学术顾问,获取答案!

免费获取
扫码关注公众号

扫码关注公众号

微信扫码加好友

微信扫码加好友

职称驿站 www.zhichengyz.com 版权所有 仿冒必究
冀ICP备16002873号-3