ProEssentials第000例SimpleGraph,使用DLL单文档VC6.0实现

PE安装不再介绍,看前面的博客。PE下载链接

本例程下载链接

1、新建单文档程序,名称“000SimpleGraph”。

2.、配置库文件目录

当前工程下新建一\Lib\ProEssentials目录,放置PEGRP32E.lib。


新建\Inc\ProEssentials目录,放置Pegrpapi.h头文件。


新建\bin 目录,放置exe文件。


3.view初始化和析构函数

//view.cpp添加头文件
#include Pegrpapi.h;
//view类成员变量
HWND m_hPE;

构造函数初始化

CMy000SimpleGraphView::CMy000SimpleGraphView()
{
	
	m_hPE=NULL;

}
CMy000SimpleGraphView::~CMy000SimpleGraphView()
{
	if (m_hPE)
		
	{
		
		PEdestroy(m_hPE);
		
		m_hPE = 0;
		
	}

}

4、添加绘制图表函数

void CMy000SimpleGraphView::CreateSimpleGraph()
{

//! Right button click to show popup menu. //
   //! Double Click to show customization dialog. //
   //! Left-Click and drag to draw zoom box. Use popup memu or 'z' to undo zoom. // 

   // Simple example show the basics of a graph object. //
   // Graph's generally only contain YData because we assume
   // data is plotted equally spaced left to right.


   RECT rect;
   GetClientRect( &rect );
   m_hPE = PEcreate(PECONTROL_GRAPH, WS_VISIBLE, &rect, m_hWnd, 1001);
   if (m_hPE) 
   {
       // Enable middle mouse dragging //
       PEnset(m_hPE, PEP_bMOUSEDRAGGINGX, TRUE);
       PEnset(m_hPE, PEP_bMOUSEDRAGGINGY, TRUE);

       // Enable Bar Glass Effect //
       PEnset(m_hPE, PEP_bBARGLASSEFFECT, TRUE);

       // Enable Plotting style gradient and bevel features //
       PEnset(m_hPE, PEP_nAREAGRADIENTSTYLE,  PEPGS_RADIAL_BOTTOM_RIGHT);
       PEnset(m_hPE, PEP_nAREABEVELSTYLE, PEBS_MEDIUM_SMOOTH);
       PEnset(m_hPE, PEP_nSPLINEGRADIENTSTYLE,  PEPGS_RADIAL_BOTTOM_RIGHT);
       PEnset(m_hPE, PEP_nSPLINEBEVELSTYLE, PESBS_MEDIUM_SMOOTH);

       // Prepare images in memory //
       PEnset(m_hPE, PEP_bPREPAREIMAGES, TRUE);

       // Pass Data //
       PEnset(m_hPE, PEP_nSUBSETS, 4);
       PEnset(m_hPE, PEP_nPOINTS, 12);

       float fY;
       for (int s=0; s<=3; s++)
       {
           for (int p=0; p<=11; p++)
           {
               fY = (((float) (p + 1)) * 50.0F) + ((float) rand()/RAND_MAX*250) + 700.0F - ((float) (s * 140.0F)) + ((float) rand()/RAND_MAX);
               PEvsetcellEx(m_hPE, PEP_faYDATA, s, p, &fY);
           }
       }

       // Set DataShadows to show 3D //
       PEnset(m_hPE, PEP_nDATASHADOWS, PEDS_SHADOWS);

       PEszset(m_hPE, PEP_szMAINTITLE, TEXT("Units Sold per Month"));
       PEszset(m_hPE, PEP_szSUBTITLE, TEXT("")); 
       PEszset(m_hPE, PEP_szYAXISLABEL, TEXT("Units Sold"));
       PEszset(m_hPE, PEP_szXAXISLABEL, TEXT("Month"));
       PEnset(m_hPE, PEP_bFOCALRECT, FALSE);
       PEnset(m_hPE, PEP_nPLOTTINGMETHOD, PEGPM_AREA);
       PEnset(m_hPE, PEP_nGRIDLINECONTROL, PEGLC_BOTH);
       PEnset(m_hPE, PEP_bALLOWRIBBON, TRUE);
       PEnset(m_hPE, PEP_nALLOWZOOMING, PEAZ_HORZANDVERT);
       PEnset(m_hPE, PEP_nZOOMSTYLE, PEZS_RO2_NOT);

       // subset labels //
       PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 0, TEXT("Texas"));
       PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 1, TEXT("Florida" ));
       PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 2, TEXT("Washington" ));
       PEvsetcell( m_hPE, PEP_szaSUBSETLABELS, 3, TEXT("California" ));

       // point labels //
       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 0, TEXT("January" ));
       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 1, TEXT("February" ));
       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 2, TEXT("March" ));
       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 3, TEXT("April" ));
       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 4, TEXT("May" ));
       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 5, TEXT("June" ));
       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 6, TEXT("July" ));
       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 7, TEXT("August" ));
       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 8, TEXT("September" ));
       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 9, TEXT("October" ));
       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 10, TEXT("November" ));
       PEvsetcell( m_hPE, PEP_szaPOINTLABELS, 11, TEXT("December" ));

       // subset colors //
       DWORD dwArray[4] = { PERGB(128,198,0,0), PERGB(128,0, 198, 198 ), PERGB(128,198,198,0 ), PERGB(128,0,198,0 ) };
       PEvsetEx(m_hPE, PEP_dwaSUBSETCOLORS, 0, 4, dwArray, 0);

       // subset line types //
       int nLineTypes[] = { PELT_MEDIUMSOLID, PELT_MEDIUMSOLID, 
           PELT_MEDIUMSOLID, PELT_MEDIUMSOLID, PELT_MEDIUMSOLID, 
           PELT_MEDIUMSOLID, PELT_MEDIUMSOLID, PELT_MEDIUMSOLID};
       PEvset(m_hPE, PEP_naSUBSETLINETYPES, nLineTypes, 8);

       // subset point types //
       int nPointTypes[] = { PEPT_DOTSOLID, PEPT_UPTRIANGLESOLID, 
           PEPT_SQUARESOLID, PEPT_DOWNTRIANGLESOLID, PEPT_DOT, 
           PEPT_UPTRIANGLE, PEPT_SQUARE, PEPT_DOWNTRIANGLE };
       PEvset(m_hPE, PEP_naSUBSETPOINTTYPES, nPointTypes, 8);

       // Allow stacked type graphs //
       PEnset(m_hPE, PEP_bNOSTACKEDDATA, FALSE);

       // Various other features //
       PEnset(m_hPE, PEP_bFIXEDFONTS, TRUE);
       PEnset(m_hPE, PEP_bBITMAPGRADIENTMODE, TRUE);
       PEnset(m_hPE, PEP_nQUICKSTYLE, PEQS_MEDIUM_LINE);
       PEnset(m_hPE, PEP_bSIMPLEPOINTLEGEND, TRUE);
       PEnset(m_hPE, PEP_bSIMPLELINELEGEND, TRUE);
       PEnset(m_hPE, PEP_nLEGENDSTYLE, PELS_1_LINE);

       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_nDATAPRECISION, 1);
       PEnset(m_hPE, PEP_nGRAPHPLUSTABLE, PEGPT_BOTH);
       PEnset(m_hPE, PEP_bMARKDATAPOINTS, TRUE);
       PEnset(m_hPE, PEP_nGRIDSTYLE, PEGS_DOT);

       // Improves metafile export //
       PEnset(m_hPE, PEP_nDPIX, 600);
       PEnset(m_hPE, PEP_nDPIY, 600);

       PEnset(m_hPE, PEP_nRENDERENGINE, PERE_GDI);//GDI+为PERE_GDIPLUS

       // Set Demo's RenderEngine to Gdi Plus VC6.0注释掉下面两句GDI+ 
    //   CMDIFrameWnd* pWnd = (CMDIFrameWnd*) AfxGetApp()->GetMainWnd();
    //   pWnd->SendMessage(WM_CHANGE_METAFILE, PEPLAYMETAFILEGDIPLUS );
   }


}

5、OnDraw中调用绘图函数

void CMy000SimpleGraphView::OnDraw(CDC* pDC)
{
	CMy000SimpleGraphDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	CreateSimpleGraph();
}
最后结果



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值