ProEssentialsv5图表组件研究论文
时间:2022-03-20 02:18:00
导语:ProEssentialsv5图表组件研究论文一文来源于网友上传,不代表本站观点,若需要原创文章可咨询客服老师,欢迎参考。
1proessentialsv5简介:
ProEssentialsv5是于windows服务器端和客户端开发的一系列图表组件,它是对绘制图表以及图表功能所需要的数据和的简单封装。可以提供Winforms、Webforms、ActiveX、VCL和DLL五种界面。它的图表类型很多,包括:一般图表、图表、3维图表、极坐标图表、饼状图表,几乎覆盖了所有常见的图表类型论文。我们可以很方便的调用ProEssentialsv5的函数库,添加绘制图表的功能,并可以对图表进行分析,如:回归,求最大值,拟合曲线等。我们还可以很方便的将图表文件的数据文件进行保存,或者导出我们希望格式的图片,如bmp、jpg、png。注:一般图表与科学图表之间的区别在于,一般图表仅提供一维坐标数据绘图,而另一维坐标数据是等间距的。科学图表提供二维坐标数据,绘制任意的散点数据。
2具体应用方法:
(1)无论开发的是OCX的应用程序、DLL的应用程序还是VCL的应用程序,首先要做的就是根据开发环境的操作系统类型,拷贝PEGRP32C.DLL到相应的在本地硬盘系统盘中去。如果是win95或者win98操作系统,拷贝PEGRP32C.DLL到System目录下;如果是win2000操作系统,拷贝PEGRP32C.DLL到System32目录下。PEGRAPHS.HLP文件是可选的
(2)工程里面添加头文件Pegrpapi.h。
选择需要调用的函数,完成图表的绘制功能。在此简介,ProEssentialsv5函数和变量的命名规则。以PEP_为前缀的变量类型如下:
PEP_bBoolean(4bytes)
PEP_nInteger(4bytes)
PEP_dwDoubleWord(4bytes)
PEP_szNullTerminatedarrayofcharacters.
PEP_fSingle(4bytes)orDouble(8bytes)floatingpoint.
PEP_naArrayofInteger(4bytes)
PEP_dwaArrayofDoubleWord(4bytes)
PEP_szaArrayofNullTerminatedstrings.
PEP_faArrayofSingle(4bytes)orDouble(8bytes)floatingpoint.
PEP_structVariousstructures
要用DLL调用来设定获取以上变量类型的值,可以根据以上变量类型的前缀来判断应该:
PEP_bPEnset/PEnget
PEP_nPEnset/PEnget
PEP_dwPElset/PElget(16bit)PEnset/PEnget(32bit)
PEP_szPEszset/PEszget.
PEP_fPEvset/PEvget
PEP_naPEvset,PEvsetcell,PEvsetcellEx/PEvget,PEvgetcell,PEvgetcellEx
PEP_dwaPEvset,PEvsetcell,PEvsetcellEx/PEvget,PEvgetcell,PEvgetcellEx
PEP_szaPEvset,PEvsetcell,PEvsetcellEx/PEvget,PEvgetcell,PEvgetcellEx
PEP_faPEvset,PEvsetcell,PEvsetcellEx/PEvget,PEvgetcell,PEvgetcellEx
PEP_structPEvset,/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++中实现线型设定方法。
intnTmpStyles[3];
nTmpStyles[0]=PELT_THINSOLID;
nTmpStyles[1]=PELT_DASH;
nTmpStyles[2]=PELT_DOT;
PEvset(hPE,PEP_naSUBSETLINETYPES,nTmpStyles,3);
注:以上代码使用的Pevset()函数,也可以使用Pevsetcell()函数来实现线型的设定方法。代码如下:
intnTmpStyle;
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实现结果:
绘制了一个图表,带游标和坐标显示功能,以下函数分别实现基本图表功能和游标显示功能。
voidCPEView::CreateSimpleSGraph()
{
RECTrect;
GetClientRect(&rect)
m_hPE=PEcreate(PECONTROL_SGRAPH,WS_VISIBLE,&rect,m_hWnd,1001);
if(m_hPE)
{
floatfY;
floatfX;
//设置子集数和每个子集的点数//
PEnset(m_hPE,PEP_nSUBSETS,4);
PEnset(m_hPE,PEP_nPOINTS,12);
for(ints=0;s<=3;s++)
{for(intp=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,"ExampleData");
PEszset(m_hPE,PEP_szSUBTITLE,"");//nosubtitle
PEszset(m_hPE,PEP_szYAXISLABEL,"UnitsSold");
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
DWORDdwArray[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);
//子集点的线型
intnLineTypes[]={PELT_MEDIUMSOLID,PELT_MEDIUMSOLID,PELT_MEDIUMSOLID,PELT_MEDIUMSOLID};
PEvset(m_hPE,PEP_naSUBSETLINETYPES,nLineTypes,4);
//子集点的类型
intnPointTypes[]={PEPT_DOTSOLID,PEPT_UPTRIANGLESOLID,PEPT_SQUARESOLID,PEPT_DOWNTRIANGLESOLID};
PEvset(m_hPE,PEP_naSUBSETPOINTTYPES,nPointTypes,4)
//Version4.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);}
}
voidCPEView::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);
//Cursorpromptingintopleftcorner//
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
//注意:必须重新初始化
elseif((m_nLastSelection==105)&&(HIWORD(wp)==PEWN_CURSORMOVE))
{intnSubset,nPoint;
floatxvalue,yvalue;
charbuffer[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,"Cursorat%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");
returnTRUE;
}
}
以上代码在Win2000,VC6环境下调试通过。
- 上一篇:行政执法责任制意见
- 下一篇:企业ERP系统设计论文